mybatis分页插件MicroPageIterceptor特点:
1,支持mysql和oracle分页
2,不必在xml编写统计cout的sql
3,使用RowBouds子类PageIfo作为分页信息和记录总数的载体,不必像其他分页插件那样要求输入输出参数必须继承特殊父类。
4,可在PageIfo中填写自定义排序sql串,提高查询性能和排序灵活性
jar已经提交mave中央库versio使用最新的
sprig中配置mybatis分页插件MicroPageIterceptor
建议在sqlSessioFactory中配置,可以根据sqlSessioFactory是oracle还是mysql配置插件的dialect属性
Dao接口设置
接口中添加PageIfo参数,表示需要分页处理
//分页查询,传入PageIfo参数public List queryIfoByCoditio(Map paramMap,PageIfo pageIfo);//不分页,则不用传PageIfo参数public List queryIfoByCoditio(Map paramMap);PageIfo结构
PageIfo继承RowBouds可以透传到Mybatis内部,不影响正常的参数。pageNo,页数从1开始pageRows,每页条数orderStr,自定义排序sql(非必填)total,返回总记录数(返回值)
public class PageIfo exteds RowBouds { public PageIfo(it pageNo,it pageRows) { super(pageNo, pageRows); } public PageIfo(it offset,it limit, Strig orderStr) { super(offset, limit); this.orderStr=orderStr; } private Logtotal = 0l; public Log getTotal() { returtotal; } public void setTotal(Log total) { this.total = total; } private StrigorderStr = ""; public Strig getOrderStr() { returorderStr; } public void setOrderStr(Strig orderStr) { this.orderStr = orderStr; }}分页或不分页sql在xml中是一样的不需要修改;sql不需要针对pageifo做额外处理,比如手工添加limit或rowum;不需要分页的则不传PageIfo参数;不需要额外填写cout统计sql;
Java调用Dao
PageIfo创建实例时需填写pageNo(页数从1开始)和pageRows(每页条数)如果xml中sql没有orderby语句可以,在pageIfo中设置pageIfo.setOrderStr()
//创建分页信息对象PageIfo pageIfo=ew PageIfo(1,10);//第1页,每页10条//可以设置order串(非必须)pageIfo.setOrderStr("id desc");//调用dao并传入pageIfoList list=testRep.queryIfoById(paramMap,pageIfo);System.out.pritl(list);//使用pageIfo.getTotal()获取总记录数System.out.pritl(pageIfo.getTotal());注意:
1,自定义排序
如果xml中sql没有写死排序sql,则pageIfo可以设置排序字符串。好处是查询记录个数时不必排序,查询记录时自动拼上排序sql,提高查询性能。也可以不修改xml中sql支持灵活排序。
2,总记录数处理
不必编写额外的查询cout的sql;记录数会在插件中设置到pageIfo对象的total字段中带回。
评论