最近公司在用到SpringBoot整合Mybatis時當web端頁面數據增多時須要使用分頁查詢以方便來展現數據。本人對分頁查詢進行了一些步驟的總結,但願可以幫助到有須要的博友。若有更好的方式,也但願評論留言,本人以做更好的改進。javascript
如下介紹實戰中數據庫框架使用的是mybatis,對整合mybatis此處不作介紹。java
使用pageHelper實現分頁查詢其實很是簡單,共三步:git
1、導入依賴; github
推薦博友能夠上maven中央倉庫去找合適的版本進行PageHelper的依賴導入web
maven中央倉庫地址:https://mvnrepository.comspring
進入maven中央倉庫後在搜索框搜索PageHelper,選擇合適的版本sql
pagehelper支持多種數據庫:Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等數據庫
在這裏咱們選擇pageHelper-spring-boot-starterapache
,點擊進入後根據項目須要選擇版本,在這裏我選擇1.2.12的最新版本springboot
複製maven依賴,添加至項目的pom.xml中
至此,PageHelper插件就引入完成。
2、添加配置;
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;
}
}
本人使用第一種方式(推薦使用)
3、在程序代碼中使用分頁查詢;
<1>.接口層(Mapper層)代碼展現:
<2.>業務層(service層)代碼展現:
注:使用PageHelper.startPage()方法設置分頁:pageCount:當前頁數 pageSize:每頁顯示的總記錄數
<3.>控制器層(controller層)代碼展現:
使用postman工做對方法進行測試:
get請求,輸入參數後進行測試
測試結果以下:
當傳入參數pageCount=1,pageSize=3時,total記錄爲4,進行了分頁操做,第一個記錄了三條數據,共兩頁
總結: 使用pagehelper插件後寫sql時不須要再在mapper.xml文件中寫分頁,簡化了代碼,提升開發效率