SpringBoot整合Mybatis關於分頁查詢的方法


最近公司在用到SpringBoot整合Mybatis時當web端頁面數據增多時需要使用分頁查詢以方便來展示數據。本人對分頁查詢進行了一些步驟的總結,希望能夠幫助到有需要的博友。如有更好的方式,也希望評論留言,本人以作更好的改進。

 

SpringBoot+Mybatis+PageHelper實現分頁

以下介紹實戰中數據庫框架使用的是mybatis,對整合mybatis此處不做介紹。

使用pageHelper實現分頁查詢其實非常簡單,共三步:

一、導入依賴; 

推薦博友可以上maven中央倉庫去找合適的版本進行PageHelper的依賴導入

maven中央倉庫地址:https://mvnrepository.com

進入maven中央倉庫后在搜索框搜索PageHelper,選擇合適的版本

 

 

 

 

pagehelper支持多種數據庫:Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等

在這里我們選擇pageHelper-spring-boot-starter

 

 

 

 

,點擊進入后根據項目需要選擇版本,在這里我選擇1.2.12的最新版本

 

 

 

 復制maven依賴,添加至項目的pom.xml中

 

 

 至此,PageHelper插件就引入完成。

 

二、添加配置;

aplication.yml或aplication.xml中添加配置:

 

 

 配置項說明:

1.helperDialect:指定數據庫
2.reasonable:默認是false。啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages(最大頁數)會查詢最后一頁。
禁用合理化時,如果pageNum<1或pageNum>pages會返回空數據
3.
supportMethodsArguments:是否支持接口參數來傳遞分頁參數,默認false
4.
params:為了支持startPage(Object params)方法,增加了該參數來配置參數映射,用於從對象中根據屬性名取值,
可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默認值,
默認值為pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero
其余參數詳情請看官方文檔:https://pagehelper.github.io/docs/howtouse

除此之外介紹另外一種方法:

編寫分頁bean類,注意:這個類一定要放在springboot啟動類所在位置的平級或子級的包中,保證能springboot掃描到

import java.util.Properties;

import org.apache.ibatis.plugin.Interceptor;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import com.github.pagehelper.PageHelper;

 

@Configuration

public class PageHelperBean {

 

@Bean

    PageHelper pageHelper(){

        //分頁插件

        PageHelper pageHelper = new PageHelper();

        Properties properties = new Properties();

        properties.setProperty("reasonable", "true");

        properties.setProperty("supportMethodsArguments", "true");

        properties.setProperty("returnPageInfo", "check");

        properties.setProperty("params", "count=countSql");

        pageHelper.setProperties(properties);

        //添加插件

        new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper});

        return pageHelper;

    }

}

本人使用第一種方式(推薦使用)

三、在程序代碼中使用分頁查詢;

<1>.接口層(Mapper層)代碼展示:

 

 

 <2.>業務層(service層)代碼展示:

 

 

 注:使用PageHelper.startPage()方法設置分頁:pageCount:當前頁數  pageSize:每頁顯示的總記錄數

<3.>控制器層(controller層)代碼展示:

 

使用postman工作對方法進行測試:

get請求,輸入參數后進行測試

 

 

 

測試結果如下:

 

 

 

 

 

 

 當傳入參數pageCount=1,pageSize=3時,total記錄為4,進行了分頁操作,第一個記錄了三條數據,共兩頁

 

總結: 使用pagehelper插件后寫sql時不需要再在mapper.xml文件中寫分頁,簡化了代碼,提高開發效率

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM