mybatis分页插件MicroPageInterceptor
源码地址:https://github.com/jeffreyning/mybatis-plus
<强> MicroPageInterceptor特点强>
1支持mysql和oracle分页
2,不必在xml编写统计数量的sql
3,使用RowBounds子类PageInfo作为分页信息和记录总数的载体,不必像其他分页插件那样要求输入输出参数必须继承特殊父类。
4,可在PageInfo中填写自定义排序sql串,提高查询性能和排序灵活性
<强>春天中配置mybatis分页插件MicroPageInterceptor 强>
建议在sqlSessionFactory中配置,可以根据sqlSessionFactory是甲骨文还是mysql配置插件的方言属性
<代码> & lt; !——定义SqlSessionFactory祝辞& lt; beanid=皊qlSessionFactory”class=皁rg.mybatis.spring.SqlSessionFactoryBean”比; & lt; propertyname=笆菰础眗ef=" dynamic_xa_dataSource "/比; & lt; propertyname=" typeAliasesPackage " value=" https://www.yisu.com/zixun/foo.model "/比; & lt; propertyname=安寮北? & lt; list> & lt; beanclass=癱om.nh.micro.mybatis.plugin.MicroPageInterceptor”比; & lt; propertyname==" https://www.yisu.com/zixun/mysql "/胺窖浴奔壑当? & lt;/bean> & lt;/list> & lt;/property> & lt;/bean> 代码>
<强>刀接口设置强>
接口中添加PageInfo参数,表示需要分页处理
<代码>//分页查询,传入PageInfo参数 公共列表queryInfoByCondition(地图paramMap PageInfo PageInfo);//不分页,则不用传PageInfo参数 公共列表queryInfoByCondition(地图paramMap); 代码>
<强> PageInfo结构强>
PageInfo继承RowBounds可以透传到Mybatis内部,不影响正常的参数。
pageNo页数从1开始
pageRows,每页条数
orderStr,自定义排序sql(非必填)
,返回总记录数(返回值)
<代码>公共类PageInfo延伸RowBounds { 公共PageInfo (int pageNo int pageRows) { 超级(pageNo pageRows); } 公共PageInfo (int抵消,int限制字符串orderStr) { 超级(偏移量,限制); this.orderStr=orderStr; } 私人Longtotal=0 l; 公共长getTotal () { returntotal; } 公共空间setTotal(长){ 这一点。总=总; } 私人StringorderStr=" "; 公共字符串getOrderStr () { returnorderStr; } 公共空间setOrderStr(字符串orderStr) { 这一点。orderStr=orderStr; } } 代码>
分页或不分页sql在xml中是一样的不需要修改,sql不需要针对pageinfo做额外处理,比如手工添加限制或rownum;不需要分页的则不传pageinfo参数,不需要额外填写数统计sql;
<代码> & lt; selectid=皅ueryInfoByCondition parameterType”=暗赝肌眗esultType=癹ava.util.Map”比; select * from micro_test5条件=# {param} & lt;/select> 代码>
<强> Java调用刀强>
PageInfo创建实例时需填写pageNo(页数从1开始)和pageRows(每页条数)
如果xml中sql没有orderby语句可以,在PageInfo中设置pageInfo.setOrderStr ()
<代码>//创建分页信息对象 PageInfo PageInfo=new PageInfo(10);//第1页,每页10条//可以设置顺序串(非必须) pageInfo。setOrderStr (id desc);//调用刀并传入pageInfo 名单列表=testRep.queryInfoById (paramMap pageInfo); System.out.println(列表);//使用pageInfo.getTotal()获取总记录数 System.out.println (pageInfo.getTotal()); 代码>
注意:
1,自定义排序
如果xml中sql没有写死排序sql,则pageInfo可以设置排序字符串。好处是查询记录个数时不必排序,查询记录时自动拼上排序sql,提高查询性能。也可以不修改xml中sql支持灵活排序。
2,总记录数处理
不必编写额外的查询计数的sql;记录数会在插件中设置到pageInfo对象的总字段中带回。