2、springBoot集成mybatis分页插件PageHelper
前言
PageHelper是一款非常好用的分页插件,它和Mybatis工作在一起,可以大幅提升开发效率。PageHelper是通过Mybatis的拦截器插件原理实现的。
1、导入依赖
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
2、启动加载PageHelperbean
package com.hlj.mybatisxml.pagehelper;
import com.github.pagehelper.PageHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
/**
* @Description
* @Author HealerJean
* @Date 2018/4/26 上午11:58.
*/
@Configuration
public class PageHelperConfiguration {
private static final Logger log = LoggerFactory.getLogger(PageHelperConfiguration.class);
@Bean
public PageHelper pageHelper() {
log.info("------Register MyBatis PageHelper");
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
p.setProperty("reasonable", "true");
//通过设置pageSize=0或者RowBounds.limit = 0就会查询出全部的结果。
p.setProperty("pageSizeZero", "true");
pageHelper.setProperties(p);
return pageHelper;
}
}
3、直接分页开始
只要找出list来就可以进行分页了
@RestController
public class PageHelperController {
@Resource
private BasesetUserMapper basesetUserMapper;
@RequestMapping(value = "page")
public PageInfo<BasesetUser> queryAll(@RequestParam(value = "pageNum", required = false, defaultValue="1") Integer pageNum,
@RequestParam(value = "pageSize", required = false, defaultValue="10") Integer pageSize) {
//传入第几页和大小
PageHelper.startPage(pageNum, pageSize);
List<BasesetUser> list = basesetUserMapper.findMyall();
PageInfo<BasesetUser> pageInfo = new PageInfo<BasesetUser>(list);
return pageInfo;
}
}
4、测试
http://localhost:8888/page?pageNum=1&pageSize=2
{
"pageNum": 1,
"pageSize": 2,
"size": 2,
"orderBy": null,
"startRow": 1,
"endRow": 2,
"total": 6,
"pages": 3,
"list": [{
"id": 1,
"username": "HealerJean",
"password": "213456",
"enable": 1
}, {
"id": 2,
"username": "HealerJean",
"password": "213456",
"enable": 1
}],
"firstPage": 1,
"prePage": 0,
"nextPage": 2,
"lastPage": 3,
"isFirstPage": true,
"isLastPage": false,
"hasPreviousPage": false,
"hasNextPage": true,
"navigatePages": 8,
"navigatepageNums": [1, 2, 3]
}
补充,代码中没有
1、 通过分页对象进行前端传入
package com.appshike.admin.domain.page;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import springfox.documentation.annotations.ApiIgnore;
@Setter
@ApiModel("分页对象")
@Accessors(chain = true)
public class PageQuery {
@ApiModelProperty(value = "开始页数,从1开始",example = "1", required = true,dataType = "java.lang.Integer")
private Integer pageNum = 1;
@ApiModelProperty(value = "每页数量",example = "20", required = true,dataType = "java.lang.Integer")
private Integer pageSize = 20;
@ApiModelProperty(hidden = true)
public Integer getPageSize() {
return pageSize == null ? 20 : pageSize;
}
public Integer getPageNum() {
return pageNum == null ? 1 : pageNum;
}
}
2、controller 其实和pageable是一样的了,是吧,但是这里根本不需要关注里面发生了什么只给一个list就可以了
@GetMapping("getCategoryTagList")
public Wrapper<?> getCategoryTagList(Long categoryId,Short classify, PageQuery pageQuery){
Map<String,Object> query = new HashMap<String,Object>();
query.put("categoryId", categoryId);
query.put("classify", classify);
PageInfo<TVideoCategoryTagVO> page = zqCategoryService.getCategoryTagList(query, pageQuery);
return WrapMapper.ok(page);
}
3、service
@TargetDataSource(DataSource.ZUIQIANG)
@Override
public PageInfo<TVideoCategoryTagVO> getCategoryTagList(Map<String,Object> query, PageQuery pageQuery) {
PageHelper.startPage(pageQuery.getPageNum(),pageQuery.getPageSize());
List<TVideoCategoryTagVO> beanList = tVideoCategoryTagMapper.getList(query);
return new PageInfo<>(beanList);
}
还没有评论,来说两句吧...