Mybatis分页插件PageHelper配置及使用方法详解
环境
框架:spring+springmvc+mybatis
pom.xml
com.github.pagehelper pagehelper 5.1.2
配置全局配置文件
在mybatis的全局配置文件中配置PageHelper分页插件
使用
例如:实现对用户的多条件查询
packagecom.szfore.model; importjava.util.Date; importjava.util.List; publicclassUser{ privateIntegerid; privateStringuname; privateStringpwd; privateStringname; privateIntegersex; privateStringphone; privateStringcompany; privateStringjobtitle; privateStringbirth; privateDatecreatedate; privateDatelastlogintime; privateListroleList; publicList getRoleList(){ returnroleList; } publicvoidsetRoleList(List roleList){ this.roleList=roleList; } publicIntegergetId(){ returnid; } publicvoidsetId(Integerid){ this.id=id; } publicStringgetUname(){ returnuname; } publicvoidsetUname(Stringuname){ this.uname=uname==null?null:uname.trim(); } publicStringgetPwd(){ returnpwd; } publicvoidsetPwd(Stringpwd){ this.pwd=pwd==null?null:pwd.trim(); } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name==null?null:name.trim(); } publicIntegergetSex(){ returnsex; } publicvoidsetSex(Integersex){ this.sex=sex; } publicStringgetPhone(){ returnphone; } publicvoidsetPhone(Stringphone){ this.phone=phone==null?null:phone.trim(); } publicStringgetCompany(){ returncompany; } publicvoidsetCompany(Stringcompany){ this.company=company==null?null:company.trim(); } publicStringgetJobtitle(){ returnjobtitle; } publicvoidsetJobtitle(Stringjobtitle){ this.jobtitle=jobtitle==null?null:jobtitle.trim(); } publicStringgetBirth(){ returnbirth; } publicvoidsetBirth(Stringbirth){ this.birth=birth==null?null:birth.trim(); } publicDategetCreatedate(){ returncreatedate; } publicvoidsetCreatedate(Datecreatedate){ this.createdate=createdate; } publicDategetLastlogintime(){ returnlastlogintime; } publicvoidsetLastlogintime(Datelastlogintime){ this.lastlogintime=lastlogintime; } }
UserMapper
注意:mapper中就按不分页的那种写法就好
packagecom.szfore.dao; importcom.szfore.model.User; importcom.szfore.model.UserExample; importjava.util.List; importorg.apache.ibatis.annotations.Param; importorg.springframework.stereotype.Repository; @Repository publicinterfaceUserMapper{ /** *多条件分页查询 *@paramuserParam *@return */ publicListqueryByPage(UseruserParam); }
UserMapper.xml
注意:sql中就不要写limit了,pageHelp会自己处理,sql就按不分页的那种写法就好
SELECT * FROM `user` ANDid=#{id} ANDuname=#{uname} ANDnamelike'%${name}%' ANDphonelike'%${phone}%' ANDcompanylike'%${company}%' ANDjobTitlelike'%${jobtitle}%' ANDbirthlike'%${birth}%'
UserServiceImpl
packagecom.szfore.service.impl; importcom.github.pagehelper.PageHelper; importcom.github.pagehelper.PageInfo; importcom.szfore.dao.MenuMapper; importcom.szfore.dao.UserMapper; importcom.szfore.dao.UserRoleMapper; importcom.szfore.model.*; importcom.szfore.service.IUserService; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.stereotype.Service; importorg.springframework.transaction.annotation.Transactional; importjavax.servlet.http.HttpSession; importjava.util.Date; importjava.util.HashMap; importjava.util.List; importjava.util.Map; @Service publicclassUserServiceImplimplementsIUserService{ @Autowired privateUserMapperuserMapper; @Autowired privateMenuMappermenuMapper; @Autowired privateUserRoleMapperuserRoleMapper; /** *多条件分页查询用户 *@paramuserParam *@parampageNum *@parampageSize *@return */ publicJsonqueryByPage(UseruserParam,IntegerpageNum,IntegerpageSize){ //利用PageHelper分页查询注意:这个一定要放查询语句的前一行,否则无法进行分页,因为它对紧随其后第一个sql语句有效 PageHelper.startPage(pageNum,pageSize); ListuserList=userMapper.queryByPage(userParam); PageInfo pageInfo=newPageInfo (userList); Jsonjson=newJson(); json.setMsg("成功!"); json.setObj(pageInfo); json.setSuccess(true); returnjson; } }
说明:PageInfo是PageHelper自带的分页对象类,详情如下:
当前页
privateintpageNum;
每页的数量
privateintpageSize;
当前页的数量
privateintsize;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow共size条数据"当前页面第一个元素在数据库中的行号
privateintstartRow;
当前页面最后一个元素在数据库中的行号
privateintendRow;
总记录数
privatelongtotal;
总页数
privateintpages;
结果集
privateListlist; 第一页
privateintfirstPage;
前一页
privateintprePage;是否为第一页
privatebooleanisFirstPage=false;
是否为最后一页
privatebooleanisLastPage=false;
是否有前一页
privatebooleanhasPreviousPage=false;
是否有下一页
privatebooleanhasNextPage=false;
导航页码数
privateintnavigatePages;
所有导航页号
privateint[]navigatepageNums;
通过PageInfo获取其他信息
PageHelper.startPage(req.getCurrentPage(),req.getPageSize(),true);
Listlist=securityRiskLibaryDAO.queryList(srl);
PageInfopage=newPageInfo(list);
page.getTotal();
page.xxxx
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。