Query q = session.createQuery("from Cat as c");
q.setFirstResult(20000);
q.setMaxResults(100);
List l = q.list();
if (useLimit) sql = dialect.getLimitString(sql);
PreparedStatement st = session.getBatcher().prepareQueryStatement(sql, scrollable);
public boolean supportsLimit() ...{
return true;
}
public String getLimitString(String sql) ...{
StringBuffer pagingSelect = new StringBuffer(100);
pagingSelect.append(sql);
pagingSelect.append(" limit ?, ?");
return pagingSelect.toString();
}
public boolean supportsLimit() ...{
return true;
}
![]()
public String getLimitString(String sql) ...{
StringBuffer pagingSelect = new StringBuffer(100);
pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
pagingSelect.append(sql);
pagingSelect.append(" ) row_ where rownum <= ?) where rownum_ > ?");
return pagingSelect.toString();
}
if ( session.getFactory().useScrollableResultSets() ) ...{
// we can go straight to the first required row
rs.absolute(firstRow);
}
else ...{
// we need to step through the rows one row at a time (slow)
for ( int m=0; m }
| 第1页: Hibernate分页查询原理解读 |