Springboot整合PageHelper分页

Springboot+Mybatis配置多数据源使用PageHelper分页

方法一

1、pom依赖 

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.2.1</version>
</dependency>

2、Bean注入,调整属性

@Bean
public PageHelper pageHelper() {
   PageHelper pageHelper = new PageHelper();
   Properties properties = new Properties();
   properties.setProperty("offsetAsPageNum", "true");
   properties.setProperty("rowBoundsWithCount", "true");
   properties.setProperty("reasonable", "true");
   properties.setProperty("dialect", "mysql");  //postgresql的同理
   pageHelper.setProperties(properties);
   return pageHelper;
}

 

使用技巧:

PageHelper.startPage(page, limit);
List<User> list = userMapper.selectList(null);
Long count = ((com.github.pagehelper.Page<User>) list).getTotal(); 

 


 

方法二

1、pom依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.13</version>
</dependency>

2、配置

pagehelper.offsetAsPageNum=true
pagehelper.rowBoundsWithCount=true
pagehelper.pageSizeZero=true
pagehelper.reasonable=false
pagehelper.params=pageNum=pageHelperStart;pageSize=pageHelperRows;
pagehelper.supportMethodsArguments=false 

3、按需配置

 PageHelper.startPage(page, limit, "id");//id升序
 List <User> list = userService.getList();
 long count=new PageInfo(list).getTotal();
//获取页数
int pages = new PageInfo(list).getPages();
 

 

切记:夹在中间的list只能有一个!!!

 

切记排序字段不唯一可能导致分页数据重复(Oracle)比较典型

====================================================

追加:某些逻辑需要返回的数据进行下一步操作可以使用工具类,需考虑list大小,否则可能会导致爆内存

public class PageUtil {
    /**
     * @param list     数据如 List<User>
     * @param pageNum  第几页
     * @param pageSize 一页多少条
     * @return
     */
    public static List startPage(List list, Integer pageNum, Integer pageSize) {
        if(list == null) {
            return null;
        }
        if(list.size() == 0) {
            return null;
        }
        Integer count = list.size(); // 记录总数
        Integer pageCount; // 页数
        if(count % pageSize == 0) {
            pageCount = count / pageSize;
        } else {
            pageCount = count / pageSize + 1;
        }
        int fromIndex; // 开始索引
        int toIndex; // 结束索引
        if(!pageNum.equals(pageCount)) {
            fromIndex = (pageNum - 1) * pageSize;
            toIndex = fromIndex + pageSize;
        } else {
            fromIndex = (pageNum - 1) * pageSize;
            toIndex = count;
        }
        List pageList = list.subList(fromIndex, toIndex);
        return pageList;
    }
}

 

posted on 2020-05-06 11:26  fuanfei  阅读(512)  评论(0)    收藏  举报