hibernate+struts2分页查询的问题,永远都是第一页,为什么第一条sql语句对,第二条变样了
首先sql语句第1条selecttop3people0_.ID_asID1_0_,people0_.unameasuname0_,people0_.passwordasp...
首先sql语句第1条select top 3 people0_.ID_ as ID1_0_, people0_.uname as uname0_, people0_.password as password0_, people0_.repassword as repassword0_ from People people0_
第2条select top 6 people0_.ID_ as ID1_2_, people0_.uname as uname2_, people0_.password as password2_, people0_.repassword as repassword2_ from People people0_为什么第2条sql语句是查询6条,而不是3条呢
也就是说为什么我的pageSize增加了一倍,我是要排除(pageNow-1)*pageSize条,查询pageSize条,求解啊
private pageNow=1;
private pageSize=3;(set和get方法默认)
public List find(int pageNow,int pageSize){
Configuration c=new Configuration();
c.configure();
SessionFactory f=c.buildSessionFactory();
Session session=f.getCurrentSession();
@SuppressWarnings("unused")
Transaction r=session.beginTransaction();
Query query= session.createQuery("from People");
query.setFirstResult(pageSize*(pageNow-1));
query.setMaxResults(pageSize);
List list=query.list();
session.close();
return list; 展开
第2条select top 6 people0_.ID_ as ID1_2_, people0_.uname as uname2_, people0_.password as password2_, people0_.repassword as repassword2_ from People people0_为什么第2条sql语句是查询6条,而不是3条呢
也就是说为什么我的pageSize增加了一倍,我是要排除(pageNow-1)*pageSize条,查询pageSize条,求解啊
private pageNow=1;
private pageSize=3;(set和get方法默认)
public List find(int pageNow,int pageSize){
Configuration c=new Configuration();
c.configure();
SessionFactory f=c.buildSessionFactory();
Session session=f.getCurrentSession();
@SuppressWarnings("unused")
Transaction r=session.beginTransaction();
Query query= session.createQuery("from People");
query.setFirstResult(pageSize*(pageNow-1));
query.setMaxResults(pageSize);
List list=query.list();
session.close();
return list; 展开
1个回答
展开全部
因为sql server 没有直接的分页功能,hibernate 采用了top的方式进行间接的分页方式,第一页top pageSize,第二页 top pageSize*2,但前pageSize条记录被丢弃了,第二页的数据是从pageSize+1开始取的.
同理,第三页的数据查询了pageSize*3条数据,前pageSize*2条记录丢弃,只要pageSize*2+1到pageSize*3之间的数据...
同理,第三页的数据查询了pageSize*3条数据,前pageSize*2条记录丢弃,只要pageSize*2+1到pageSize*3之间的数据...
追问
那我的方法里查询的条件出错了吗,我看网上都是这样写的,书上也是啊,求解啊,那怎么可以实现永远都只查询3条啊,我不要查询6条啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询