springboot集成pagehelper
1、导入pom.xml
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.12
2、application.yml配置文件
#分页插件pagehelper配置
pagehelper:
helperDialect: mysql #数据库方言
supportMethodsArguments: true #是否支持传参
3、使用分页插件,在查询前使用分页插件,原理:统一拦截sql,为其提供分页功能
/**
* page: 第几页
* pageSize: 每页显示条数
*/
PageHelper.startPage(page, pageSize);
//自己的mapper查询
List<?> list = xxxMapper.query(xxx);
PageInfo<?> pageInfo = new PageInfo<>(list);
此时已经将需要的页面信息封装到pageInfo中了,如果前端不需要返回这么多内容,可以自己封装一个返回类
扩展:1、封装自己的返回类
import java.util.List;
public class PagedGridResult {
private int page; // 当前页数
private int total; // 总页数
private long records; // 总记录数
private List<?> rows; // 每行显示的内容
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public long getRecords() {
return records;
}
public void setRecords(long records) {
this.records = records;
}
public List<?> getRows() {
return rows;
}
public void setRows(List<?> rows) {
this.rows = rows;
}
}
2、举例使用
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public PagedGridResult queryPagedComments(String itemId, Integer level, Integer page, Integer pageSize) {
Map map = new HashMap();
map.put("itemId",itemId);
map.put("level", level);
/**
* page: 第几页
* pageSize: 每页显示条数
*/
PageHelper.startPage(page, pageSize);
List list = itemsMapperCustom.queryItemComments(map);
return setterPageGrid(list, page);
}
/**
* 将pageInfo在封装一次,封装成自己项目想要的返回内容
* @param list
* @param page
* @return
*/
private PagedGridResult setterPageGrid(List<?> list, Integer page){
PageInfo<?> pageInfo = new PageInfo<>(list);
PagedGridResult grid = new PagedGridResult();
grid.setPage(page);
grid.setRows(list);
grid.setTotal(pageInfo.getPages());
grid.setRecords(pageInfo.getTotal());
return grid;
}