关于mysql中的Query语句

时间:2012-07-13 14:23:57

标签: java mysql hibernate

我在mysql中使用此代码进行分页(使用Struts 2 + Hibernate):

Query query=getSession().createQuery("from GovOffice");
query.setFirstResult(0);
query.setMaxResult(100);
List<GovOffice> list=query.list();

这将返回从第一条记录开始的GovOffice列表,每页显示100条记录。

假设我有100,000条记录,这个“来自GovOffice”的查询是否首先获得所有100,000条记录?  通过setFirstResult和setMaxReSult,它将限制从100,000到100个记录。如果这是真的,那意味着分页必须是无用的。

如果没有办法证明在我们致电query.list()之前查询不会从数据库获取数据。

2 个答案:

答案 0 :(得分:5)

Query的{​​{1}}和setFirstResult使用了数据库的潜在可能性。

对于MySQL,它是limit

所以,不,它不会获取所有记录,是的,它是有效的。

源代码中的证明(org.hibernate.dialect.MySQLDialect):

setMaxResult

答案 1 :(得分:3)

我认为文档非常清楚,只会从数据库中检索最大结果。

setMaxResults(int)

似乎是我的等同物

SELECT * FROM GovOffice LIMIT 0, 100;