采用pagehelper进行分页设置
引入依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
在springboot中对其进行设置,application.yml中添加:
#pagehelper分页配置
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
或者在application.properties中设置:
#pagehelper分页配置
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
然后创建一个分页的对象,主要是为了在操作对象的时候方便进行处理:
public class PageBean<T> {
private long total; //总记录数
private int pageNum = 1; // 第几页
private int pageSize = 10; // 每页记录数
private int pages; // 总页数
private int size; // 当前页的数量 <= pageSize,该属性来自ArrayList的size属性
private List<T> list; //结果集
/**
* 包装Page对象,因为直接返回Page对象,在JSON处理以及其他情况下会被当成List来处理,
* 而出现一些问题。
*
* @param list page结果
*/
public PageBean(List<T> list) {
if (list instanceof Page) {
Page<T> page = (Page<T>) list;
this.pageNum = page.getPageNum();
this.pageSize = page.getPageSize();
this.total = page.getTotal();
this.pages = page.getPages();
this.list = page;
this.size = page.size();
}
}
开始进行分页查询:
@GetMapping(value = "findAllByPage")
public Map<String, Object> findAllByPage(@NotNull PageBean<C> pageBean) {
//设置分页信息,分别是当前页数和每页显示的总记录数
//【记住:必须在mapper接口中的方法执行之前设置该分页信息】
PageHelper.startPage(pageBean.getPageNum(), pageBean.getPageSize());
List<C> cList = ctripTravelService.findAll();
PageBean<C> page = new PageBean<>(cList );
Map<String, Object> map = MapUtils.getBootstrapTableData(page);
return map;
}
PageHelper.startPage设置当前页的页码和每页的记录数,设置完成后会对后续第一个sql进行分页查询操作