MySql实现翻页查询功能
首先明确为什么要使用分页查询,因为数据庞大,查询不可能全部显示在页面上,如果全部显示在页面上,也会造成查询速度慢的情况,所以分页查询解决了①数据查询;②性能优化,等(其他问题欢迎补充)的问题。
分页查询也分为真分页和假分页:
真分页:基于数据库查出的数据直接分页显示,优点是改变数据库数据不会影响查询结果,缺点是速度稍慢。
假分页:将所有数据查询出的数据,封装到list集合缓存中,表现层方法调用执行。由于将数据封装为集合放入了内存中,所以速度较快,但缺点是数据库改变后,会出现不匹配的情况。
两种分页各有优缺点,小伙伴们视具体情况使用吧。
下面要介绍的就是真分页的方法:
1、建立JavaBean
importjava.io.Serializable;
/**
*用户实体类
*@author
*
*/
publicclassUserBeanimplementsSerializable{
/**用户ID*/
privateintid;
/**用户名字*/
privateStringname;
publicUserBean(){
}
publicUserBean(intid,Stringname){
this.id=id;
this.name=name;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@Override
publicStringtoString(){
return"UserBean[id="+id+",name="+name+"]";
}
}
2、用于展示分页数据的JavaBean
/**
*用于展示分页数据的JavaBean对象
*@author
*
*/
importjava.util.List;
publicclassPagenationBean{
/**当前页数*/
privateIntegercurrPage;
/**总页数*/
privateIntegertotalPage;
/**用于展示的table数据*/
privateListdataList;
publicIntegergetCurrPage(){
returncurrPage;
}
publicvoidsetCurrPage(IntegercurrPage){
this.currPage=currPage;
}
publicIntegergetTotalPage(){
returntotalPage;
}
publicvoidsetTotalPage(IntegertotalPage){
this.totalPage=totalPage;
}
publicListgetDataList(){
returndataList;
}
publicvoidsetDataList(ListdataList){
this.dataList=dataList;
}
}
3、dao层实现类
@Override
publicintgetTotalCount(){//计算总的数据条数
this.setConnection();
inttotalCount=0;
try{
ps=con.prepareStatement("selectcount(*)fromt_user");
rs=ps.executeQuery();
if(rs.next()){
totalCount=rs.getInt(1);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
this.closeConnection();
}
returntotalCount;
}
@Override
publicListgetUserListByStartIndex(intStartIndex){//根据传入的limit第一位参数得到该参数后面的10条数据
ListuserList=newArrayList<>();
UserBeanuserBean=null;
this.setConnection();
inttotalCount=0;
try{
ps=con.prepareStatement("select*fromt_userlimit?,10");
ps.setInt(1,StartIndex);
rs=ps.executeQuery();
while(rs.next()){
userBean=newStuBean();
userBean.setId(rs.getInt("id"));
userBean.setName(rs.getString("name"));
stuList.add(userBean);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
this.closeConnection();
}
returnuserList;
}
4、service层实现类
privateIUserDaoisd=newUserDaoImpl();
@Override
publicintgetTotalPage(){
//得到数据据条数
inttotalCount=isd.getTotalCount();
//计算总页数公式
inttotalPage=(totalCount+10-1)/10;
returntotalPage;
}
@Override
publicListgetUserListByCurrPage(intcurrPage){
//通过当前页计算起始索引
intStartIndex=(currPage-1)*10;
ListuserList=isd.getStuListByStartIndex(StartIndex);
returnuserList;
}
5、将查询出的数据放入页面展示就OK了。
以上方法中,分页显示的是10条数据,计算分析如下:
数据总条数:totalCount
每页显示条数:pageSize
总页数:totalPage
起始索引StartIndex
当前页数currPage
总页计算公式:
totalCount%pageSize
如果余数为0——>totalPage=totalCount/pageSize
如果余数不为0——>totalPage=totalCount/pageSize+1
得出结论:totalPage=(totalCount+pageSize-1)/pageSize
总结
以上所述是小编给大家介绍的MySql实现翻页查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。