最近在学习Spring Data JPA, 用到了 Spring-data-commons包中自带的分页工具,
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CommentRepository extends JpaRepository<Comment,Integer> {
@Override
Page<Comment> findAll(Pageable pageable);
}
抱着学习的心态看了下源码,是为了了解别人的实现思路, 在这里记录一下。
1. 总的来说,分页是实现了将想要请求的 pageIndex, pagesize 或者其他分页信息层层传递到dao层,
执行了一行类似下面的sql (mysql) ,并将数据返回给前端的过程。
limit关键字:LIMIT [offset,] rows
offset 是偏移量 默认是0 , rows是要查的行数
select * from table limit 0,5 查询前五行数据
select * from table limit 5 查询前五行数据 因为偏移量默认是零
select * from table_name limit 10,5 查询第11 到15 的数据
2. 其中主要包含了以下接口和类
接口: 1. pageable 自定义的一个接口
2. Slice<T> 继承了 Iterable<T