繁体   English   中英

JQuery DataTables服务器端分页,排序,使用Spring MVC + JPA进行搜索

[英]JQuery DataTables server-side pagination, sorting, search with Spring MVC + JPA

我正在努力将旧的.NET Web应用程序移植到Java + Spring MVC + JPA。

并且再次提出了一个老问题。 在这个问题JQuery DataTables服务器端分页我正在寻找一个.NET解决方案。 最后我发现了它。

现在我需要知道Java应用程序是否存在类似的东西。 我用Google搜索了一下,但我没有发现任何真正完整的内容......

有一种使用JPA进行分页的简单方法。 如果你看一下javax.persistence.Query 接口 ,你会发现它有setFirstResult()setMaxResult()方法。 通过组合使用,您可以检索查询的分页结果。

一些代码来说明:

Query q = entityManager.createQuery("select f from Foo");
q.setFirstResult(10).setMaxResults(10);
List<Foo> foos = q.getResultList();

这将从第10个结果开始从查询中检索10个结果。

对于排序,您有几种方法。 您可以根据需要排序的字段更改查询,例如

entityManager.createQuery("select f from Foo order by f.field1 asc").setFirstResult(10).setMaxResults(10).getResultList();

要么

entityManager.createQuery("select f from Foo order by f.field2 asc").setFirstResult(10).setMaxResults(10).getResultList();

或者,您可以查看javax.persistence.CriteriaQuery API,它可以使事情更易于维护:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Foo> query = cb.createQuery(Foo.class);
Root<Foo> root = query.from(Foo.class);
query.select(root).orderBy(cb.asc(root.get("theFieldToOrderBy")));
entityManager.createQuery(query).setFirstResult(10).setMaxResults(10).getResultList();

搜索有点困难。 使用JPA搜索实体的所有字段都没有本地方法。 你可能需要看看像Hibernate Search这样的东西来帮助你。 假设您使用Hibernate作为您选择的持久性提供程序,它应该与JPA API完全整合。

我终于解决了实现一个特殊的 Java库: DataTables Pagination

在这里,您可以找到我的项目jar https //bitbucket.org/davioooh/datatablepager/


更新(2016年9月1日) :我最近更新了我的项目以支持v 1.10.x.


更新(2017年5月26日) :我将项目回购移动到GitHub

最近建立了一个名为JED的类库,可以帮助您解决分页问题。 虽然JED不涉及JPA,但它确实执行DataTables的所有CRUD(创建,读取,更新,删除)操作。 它还可以配置为执行服务器端处理,包括排序,搜索和分页。 服务器端处理通常在您拥有50K或更多记录等极大数据集时完成,否则,DataTables会在客户端完成所有这些操作。

请参阅以下示例: http//jed-datatables.net/examples/basicssp.jsp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM