最近公司在用到SpringBoot整合Mybatis時當web端頁面數據增多時需要使用分頁查詢以方便來展示數據。本人對分頁查詢進行了一些步驟的總結,希望能夠幫助到有需要的博友。如有更好的方式,也希望評論留言,本人以作更好的改進。 SpringBoot+Mybatis+PageHelper實現分頁 以 ...
最近公司在用到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文件中寫分頁,簡化了代碼,提高開發效率