1. Rowbounds
Rowbounds将所有符合条件的数据加载到内存,然后再实现逻辑切割。@Override
public List<User> getAllUser() {
    RowBounds rowBounds = new RowBounds(1, 2);
    return userMapper.getAllUser(rowBounds);
}
查询sql(没有任何分页逻辑):
 
 实际结果(有分页结果):
 
 数据库数据:
 
 逻辑图:
2. PageHelper
PageHelper使用Interceptor对特定sql进行拦截,然后拼接limit关键字。maven
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.1</version>
</dependency>
Service
@Override
public List<User> getAllUser() {
    PageHelper.startPage(2, 5);
    List<User> allUser = userMapper.getAllUser();
    PageInfo<User> userPageInfo = new PageInfo<>(allUser);
    return userPageInfo.getList();
}
查询sql(多了limit关键字):
 
3. 总结
Rowbound是一次性加载数据,然后再做逻辑分页PageHelper是对特定sql语句进行拦截,添加limit关键字
优缺点:
 Rowbound加载大量数据时,会浪费大量的内存,同时加重网络的传输负担;
 PageHelper加载大量数据集可以发挥更好的性能,因为他是直接拼接sql的方式去进行分页查询。



















