前言
每次寫(xiě)一個(gè)項(xiàng)目的時(shí)候,如果涉及到分頁(yè),總會(huì)感覺(jué)寫(xiě)起來(lái)不舒服,通常需要在xml 里面寫(xiě)分頁(yè)語(yǔ)句,還要寫(xiě)一個(gè)查詢總數(shù)的語(yǔ)句,這樣總感覺(jué)不是特別優(yōu)雅。現(xiàn)在在網(wǎng)上找了個(gè)Mybatis分頁(yè)插件,用著特別舒服,給大家介紹下。
PageHelper
作者是中國(guó)的一個(gè)的程序員,項(xiàng)目地址
https://git.oschina.net/free/Mybatis_PageHelper
使用方法
官網(wǎng)已經(jīng)有詳細(xì)的使用方法,這里簡(jiǎn)單介紹下如何整合SpringBoot+Mybatis.
其實(shí)很簡(jiǎn)單,他已經(jīng)有了springboot 的start包,完全零配置。
1.引入依賴
<!--分頁(yè)-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.3</version>
</dependency>
2.使用
在你需要分頁(yè)調(diào)用mapper方法時(shí)
PageHelper.offsetPage(1, 10);
List<Country> list = countryMapper.selectIf(1);
獲取總數(shù)total的方法
//count查詢,返回一個(gè)查詢語(yǔ)句的count數(shù)
long total = PageHelper.count(new ISelect() {
@Override
public void doSelect() {
countryMapper.selectLike(country);
}
});
個(gè)人感覺(jué)最簡(jiǎn)單優(yōu)雅的方式是直接使用java8的lamda表達(dá)式直接獲取一個(gè)完整的page對(duì)象,其中包括了 頁(yè)數(shù),條數(shù)等等詳細(xì)信息代碼如下
pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> countryMapper.selectGroupBy());
返回值pageInfo大概是這樣的
{
"endRow": 3,
"firstPage": 1,
"hasNextPage": true,
"hasPreviousPage": false,
"isFirstPage": false,
"isLastPage": false,
"lastPage": 2,
"list": [
//查詢到的結(jié)果集
],
"navigateFirstPage": 1,
"navigateLastPage": 2,
"navigatePages": 8,
"navigatepageNums": [
1,
2
],
"nextPage": 1,
"pageNum": 0,
"pageSize": 3,
"pages": 2,
"prePage": 0,
"size": 3,
"startRow": 1,
"total": 6
}
可以看到是真的很簡(jiǎn)單和優(yōu)雅。