[u][color=blue]分页[/color][/u]
用rownum较多
Oracle数据库的rownum
在Oracle数据库中,分页方式没有MySql这样简单,它需要依靠rownum来实现.
Rownum表示一条记录的行号,值得注意的是它在获取每一行后才赋予.因此,想指定rownum的区间来取得分页数据在一层查询语句中是无法做到的,要分页还要进行一次查询.
Hibernate实现的分页
如果使用Hibernate取代JDBC,那么上面这一步就不用我们自己费力了,Hiberate会根据方言的种类选择不同的方案,具体我们不必知道也不想知道,要分页直接制定firstRow和maxRow即可,具体函数如下:
用ROWNUM 查询如下例子:
select productname,proid,ADDTIME,prodetail from (select productname,proid,ADDTIME,prodetail,rownum rn from sys.tblproduct where rownum<="+(intPage*intPageSize)+" order by proid desc) t where rn>="+ ((intPage-1)*intPageSize+1) +" order by t.proid desc ";
用hibernate分,SQL分,按需取出数据量
Session session=getSession();
Query q=session.createQuery(sql);
q.setCacheable(true);
q.setFirstResult(page*pagecount);
q.setMaxResults(pagecount);
List list=q.list();
session.clear();
session.close();
return list;
用rownum较多
Oracle数据库的rownum
在Oracle数据库中,分页方式没有MySql这样简单,它需要依靠rownum来实现.
Rownum表示一条记录的行号,值得注意的是它在获取每一行后才赋予.因此,想指定rownum的区间来取得分页数据在一层查询语句中是无法做到的,要分页还要进行一次查询.
Hibernate实现的分页
如果使用Hibernate取代JDBC,那么上面这一步就不用我们自己费力了,Hiberate会根据方言的种类选择不同的方案,具体我们不必知道也不想知道,要分页直接制定firstRow和maxRow即可,具体函数如下:
用ROWNUM 查询如下例子:
select productname,proid,ADDTIME,prodetail from (select productname,proid,ADDTIME,prodetail,rownum rn from sys.tblproduct where rownum<="+(intPage*intPageSize)+" order by proid desc) t where rn>="+ ((intPage-1)*intPageSize+1) +" order by t.proid desc ";
用hibernate分,SQL分,按需取出数据量
Session session=getSession();
Query q=session.createQuery(sql);
q.setCacheable(true);
q.setFirstResult(page*pagecount);
q.setMaxResults(pagecount);
List list=q.list();
session.clear();
session.close();
return list;