【Mybatis】使用PageHelper进行分页查询
创始人
2024-03-01 05:10:17
0

        使用mybatis时,最容易遇到的需求就是分页查询了。借助pagehelper分页插件可以快速的实现分页功能。而且这个插件的优点是分页与mapper.xml完全解耦,有效的避免了直接写分页sql来实现分页功能。

一、分页插件原理

        分页插件的基本原理是使用mybatis提供的 插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,添加对应的分页语句及分页参数。

         举例:SELECT * FROM diagnosis,拦截sql后重写为:select t.* from (SELECT * FROM diagnosis) t LIMIT 0,10

二、mapper.xml文件配置:

说明如下:

        1、使用pagehelper进行分页查询时,,无需写分页语句,对于其他的查询条件可正常编写。

        2、模糊查询指令:like "%"#{查询条件}"%"

三、 在代码中使用

//dao代码片段    
List findByCountryProjectName(@Param("countryProjectName") String countryProjectName);

说明如下:

        1、dao层代码入参中只需写查询条件,无需写分页入参 。

 public PageInfo findByCountryProjectName(String countryProjectName, int pageNum, int pageSize) {PageHelper.startPage(pageNum, pageSize);List list = diagnosisDAO.findByCountryProjectName(countryProjectName);Long total = 0L;if (!list.isEmpty()) {//查询总数total = diagnosisDAO.findDiagnosisCount(countryProjectName);}PageInfo pageInfo = new PageInfo<>();pageInfo.setList(list);pageInfo.setPageNum(pageNum);pageInfo.setPageSize(pageSize);pageInfo.setTotal(total);return pageInfo;}

使用PageInfo对象包装查询结果,无需在查询总数,代码优化如下: 

  public PageInfo findByCountryProjectName(String countryProjectName, int pageNum, int pageSize) {PageHelper.startPage(pageNum, pageSize);List list = diagnosisDAO.findByCountryProjectName(countryProjectName);PageInfo pageInfo = new PageInfo(list);return pageInfo;}

 说明如下:

        1、PageHelper.startPage(pageNum, pageSize); 引入分页查询,pageNum:页码,pageSize:每页显示数量。

        2、一定要在查询之前引入,它会自动对该代码下的第一个查询进行分页,即:        findByCountryProjectName。

        3、查询结果使用PageInfo包装,无需再查询总数,减少与数据库交互,返回的对象信息如下,total为总数:

 {"total": 0,"list": [],"pageNum": 1,"pageSize": 7,"size": 0,"startRow": 0,"endRow": 0,"pages": 0,"prePage": 0,"nextPage": 0,"isFirstPage": true,"isLastPage": true,"hasPreviousPage": false,"hasNextPage": false,"navigatePages": 8,"navigatepageNums": [],"navigateFirstPage": 0,"navigateLastPage": 0}

相关内容

热门资讯

天玑科技:因涉嫌串标,公司及相... 12月22日,天玑科技(300245.SZ)发布公告称,公司近日收到上海市虹口区人民检察院送达的《起...
交建股份实际控制人因涉嫌犯罪被... 12月22日晚,交建股份公告,公司实际控制人俞发祥因涉嫌犯罪被绍兴市公安局采取刑事强制措施,案件正在...
涉嫌串通投标,这家上市公司被起... 12月22日,天玑科技(300245.SZ)公告称,公司于近日收到上海市虹口区人民检察院送达的《起诉...
40项试点经验及实践案例入围广... 中新网南宁12月22日电(林浩)广西壮族自治区商务厅22日介绍,中国(广西)自由贸易试验区第七批自治...
突发!祥源文旅董事长俞发祥涉嫌... 【大河财立方消息】12月22日,浙江祥源文旅股份有限公司(证券简称:祥源文旅)公告,收到公司实际控制...
祥源文旅:实控人俞发祥因涉嫌犯... 祥源文旅12月22日晚间公告,公司实际控制人俞发祥因涉嫌犯罪被绍兴市公安局采取刑事强制措施,案件正在...
信用修复非“征信洗白”,一次性... 中国人民银行今天发布一次性信用修复政策,符合相关条件的逾期信息,将不会在个人信用报告中予以展示,助力...
创识科技实控人遭留置,曾涉公司... 12月22日晚间,创识科技(300941.SZ)突发公告:收到山东省邹平市监察委员会签发的《立案通知...
预付款“打了水漂”?孝义市法院... 在商场办了预付卡,再去消费时却发现店铺已人去楼空,查询后更发现商家已注销登记。卡里的余额该找谁要?是...
祥源文旅:实际控制人俞发祥因涉... 每经AI快讯,12月22日,祥源文旅(600576.SH)公告称,公司实际控制人俞发祥因涉嫌犯罪被绍...