Java如何限制Hibernate查询结果?
在下面的示例中,您将看到如何限制Hibernate查询返回的记录数。限制通常用于创建分页结果的查询结果,在该分页结果中,我们可以在应用程序数据中一页一页地导航,但是从数据库中读取的数据很少。
在Hibernate的Query对象中,我们需要通过调用setFirstResult()和setMaxResults()方法来指定第一个结果和最大结果。
package org.nhooo.example.hibernate.app;
import org.hibernate.query.Query;
import org.hibernate.Session;
import org.nhooo.example.hibernate.model.Label;
import java.util.List;
public class LabelManager {
public List<Label> getLabels(int pageNumber, int pageSize) {
Session session =
SessionFactoryHelper.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query<Label> query = session.createQuery("from Label", Label.class);
//设置第一个记录位置和最大记录数为
//读。setFirstResult()告诉休眠数据从哪一行开始
//应该阅读。在示例中,如果我们有10条记录的页面,
//传递页码2将从第20行读取10条记录
//在所选记录中。
query.setFirstResult((pageNumber - 1) * pageSize);
query.setMaxResults(pageSize);
List<Label> labels = query.list();
session.getTransaction().commit();
return labels;
}
}package org.nhooo.example.hibernate.app;
import org.nhooo.example.hibernate.model.Label;
import java.util.List;
public class LimitDemo {
public static void main(String[] args) {
LabelManager manager = new LabelManager();
List<Label> labels = manager.getLabels(1, 10);
for (Label label : labels) {
System.out.println("Label = " + label);
}
}
}Maven依赖
<dependencies>
<!--https://search.maven.org/remotecontent?filepath=org/hibernate/hibernate-core/5.4.1.Final/hibernate-core-5.4.1.Final.jar-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.1.Final</version>
</dependency>
<!--https://search.maven.org/remotecontent?filepath=org/hibernate/hibernate-ehcache/5.4.1.Final/hibernate-ehcache-5.4.1.Final.jar-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.4.1.Final</version>
</dependency>
<!--https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>