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;
    }