Lee*_*han 3 java mysql hibernate
我在mysql中使用此代码进行分页(使用Struts 2 + Hibernate):
Query query=getSession().createQuery("from GovOffice");
query.setFirstResult(0);
query.setMaxResult(100);
List<GovOffice> list=query.list();
Run Code Online (Sandbox Code Playgroud)
这将返回从第一条记录开始的GovOffice列表,每页显示100条记录.
假设我有100,000条记录,这个"来自GovOffice"的查询是否首先获得所有100,000条记录?通过setFirstResult和setMaxReSult,它将限制从100,000到100个记录.如果这是真的,那意味着分页必须是无用的.
如果没有,有任何方法可以证明在我们调用之前查询不会从DB获取数据query.list().
Query的setFirstResult和setMaxResult使用数据库的潜在可能性.
在MySQL的情况下,它是限制.
所以,不,它不会获取所有记录,是的,它是有效的.
源代码中的证明(org.hibernate.dialect.MySQLDialect):
238 public String getLimitString(String sql, boolean hasOffset) {
239 return new StringBuffer( sql.length()+20 )
240 .append(sql)
241 .append( hasOffset ? " limit ?, ?" : " limit ?")
242 .toString();
243 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |