SpringBoot集成MyBatis的分页插件PageHelper实例代码
昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效。因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用烂了,下面带着各位吃一下回头草。
首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而不为?通常引入它们只需三步骤,不管是Spring集成还是SpringBoot集成都是老套路,我就分开总结了,望各位笑纳。
Spring集成PageHelper:
第一步:pom文件引入依赖
com.github.pagehelper pagehelper
第二步:MyBatis的核心配置文件中引入配置项
第三步:业务逻辑实现分页功能,我们只需将当前查询的页数page和每页显示的总条数rows传进去,然后Pagehelper已经帮我们分好数据了,只需在web层获取数据即可。
//分页查询商品列表: @Override publicDatagridResultitemList(Integerpage,Integerrows){ //为了程序的严谨性,判断非空: if(page==null){ page=1;//设置默认当前页 } if(page<=0){ page=1; } if(rows==null){ rows=30;//设置默认每页显示的商品数(因为jsp页面上默认写的就是30条) } //1、设置分页信息,包括当前页数和每页显示的总计数 PageHelper.startPage(page,rows); //2、执行查询 TbItemExampleexample=newTbItemExample(); Listlist=tbItemMapper.selectByExample(example); //3、获取分页查询后的数据 PageInfo pageInfo=newPageInfo<>(list); //4、封装需要返回的分页实体 DatagridResultresult=newDatagridResult(); //设置获取到的总记录数total: result.setTotal(pageInfo.getTotal()); //设置数据集合rows: result.setRows(list); returnresult; }
springboot集成PageHelper:
第一步:pom文件还是需要引入依赖
com.github.pagehelper pagehelper 4.1.6
第二步:这次直接是在项目的入口类application.java中直接设置PageHelper插件即可
//配置mybatis的分页插件pageHelper @Bean publicPageHelperpageHelper(){ PageHelperpageHelper=newPageHelper(); Propertiesproperties=newProperties(); properties.setProperty("offsetAsPageNum","true"); properties.setProperty("rowBoundsWithCount","true"); properties.setProperty("reasonable","true"); properties.setProperty("dialect","mysql");//配置mysql数据库的方言 pageHelper.setProperties(properties); returnpageHelper; }
第三步:同理,使用插件实现分页功能,方式还是一样,只需将当前查询的页数和每页显示的条数穿进去即可,直接o源码
这是需要用到的分页实体,各位可以直接享用。
packagecom.zxz.utils; /** *分页bean */ importjava.util.List; publicclassPageBean{ //当前页 privateIntegercurrentPage=1; //每页显示的总条数 privateIntegerpageSize=10; //总条数 privateIntegertotalNum; //是否有下一页 privateIntegerisMore; //总页数 privateIntegertotalPage; //开始索引 privateIntegerstartIndex; //分页结果 privateList items; publicPageBean(){ super(); } publicPageBean(IntegercurrentPage,IntegerpageSize,IntegertotalNum){ super(); this.currentPage=currentPage; this.pageSize=pageSize; this.totalNum=totalNum; this.totalPage=(this.totalNum+this.pageSize-1)/this.pageSize; this.startIndex=(this.currentPage-1)*this.pageSize; this.isMore=this.currentPage>=this.totalPage?0:1; } publicIntegergetCurrentPage(){ returncurrentPage; } publicvoidsetCurrentPage(IntegercurrentPage){ this.currentPage=currentPage; } publicIntegergetPageSize(){ returnpageSize; } publicvoidsetPageSize(IntegerpageSize){ this.pageSize=pageSize; } publicIntegergetTotalNum(){ returntotalNum; } publicvoidsetTotalNum(IntegertotalNum){ this.totalNum=totalNum; } publicIntegergetIsMore(){ returnisMore; } publicvoidsetIsMore(IntegerisMore){ this.isMore=isMore; } publicIntegergetTotalPage(){ returntotalPage; } publicvoidsetTotalPage(IntegertotalPage){ this.totalPage=totalPage; } publicIntegergetStartIndex(){ returnstartIndex; } publicvoidsetStartIndex(IntegerstartIndex){ this.startIndex=startIndex; } publicList getItems(){ returnitems; } publicvoidsetItems(List items){ this.items=items; } }
分页功能源码(web层和service层)。
@Override publicList- findItemByPage(intcurrentPage,intpageSize){ //设置分页信息,分别是当前页数和每页显示的总记录数【记住:必须在mapper接口中的方法执行之前设置该分页信息】 PageHelper.startPage(currentPage,pageSize); List
- allItems=itemMapper.findAll();//全部商品 intcountNums=itemMapper.countItem();//总记录数 PageBean
- pageData=newPageBean<>(currentPage,pageSize,countNums); pageData.setItems(allItems); returnpageData.getItems(); } /** *商品分页功能(集成mybatis的分页插件pageHelper实现) * *@paramcurrentPage:当前页数 *@parampageSize:每页显示的总记录数 *@return */ @RequestMapping("/itemsPage") @ResponseBody publicList
- itemsPage(intcurrentPage,intpageSize){ returnitemService.findItemByPage(currentPage,pageSize); }
到这儿呢,MyBatis的分页插件PageHelper就完全和SpringBoot集成到一起了,确实没有什么新鲜的,标题有个"回头草"就是这个意思,重点和各位复习一下MyBatis的分页插件的运用,好久没用了正好一块总结一下哈。