mybatis分页插件MicroPageInterceptor

  

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对象的总字段中带回。

mybatis分页插件MicroPageInterceptor