今天做Extjs分页时,发现原来框架基于MSSQL的,打印处于举发现为利用select top 进行分页,而在mysql中使用
select * from table limit ?,?.
在网上进行查询这事Hibernate为了实现统一分页接口而在方言中进行封装.Oracle中通过Rownum是实现。
个人认为可以在MSSQl 2005以上版本利用
ROW_NUMBER()可进行“真分页”。
再用uniqueResult做分页统计是,注意结果集只能唯一,否则报错,查看源码后发现
static Object uniqueElement(List list) throws NonUniqueResultException {
int size = list.size();
if (size==0) return null;
Object first = list.get(0);
for ( int i=1; i<size; i++ ) {
if ( list.get(i)!=first ) {
throw new NonUniqueResultException( list.size() );
}
}
return first;
}
只要结果集不唯一则抛异常,但是结果集的数量以一定唯一,特此mark.