1、分页的概念
简单来说:大量数据无法一次性全部显示在网页上?怎么办?只能选取其中的一部分,将大量数据分成好几段,每一段我们用一个网页显示,也就是一页,在页面上我们可以手动控制我们要选择的页面.分页就是将大量数据分成很多页显示的一种处理手段.
2、分页的好处
1通过分页,我们不用一次性将所有的数据查出来,只需先查出来一部分,可以减少数据库的IO数据量的传输,降低数据库读写压力,从而提高数据库响应速度
2页面也不用一次性显示所有的数据,可以减少浏览器和服务器之间大量数据的IO传输,从而提高服务器的响应速度
3我们可能值需要很多信息中少数的几条,那么传输其他多余的数据就是无形之中对于资源的浪费,分页可以减少资源的浪费
3、数据库上如何实现分页查询?
select * from student limit 0,5
sql语句通过limit关键字实现数据的分页查询, limit后面可以放两个整数作为参数,前一个参数的意义为从那条数据开始查询,后一个参数的意义是连续取出多少条
如果查询 第n 页,每页x条 数据那么sql语句应该写成Select * from student limit (n-1)*x,x
分页查询的sql语句代码公式为:SELECT * FROM emp LIMIT (页码数-1)*页大小,页大小
4、写一个工具类用于实现分页
import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import java.util.List; public class CommonUtils { public static<T> Page<T> getPage(List<T> dataList, String currentIndex){ //设置每页展示两条 Pageable pageable = PageRequest.of(Integer.parseInt(currentIndex)-1,2); int start = (int) pageable.getOffset(); int end = Math.min(start+pageable.getPageSize(), dataList.size()); return new PageImpl<>(dataList.subList(start,end),pageable, dataList.size()); } }
public class test { public static void main(String[] args) { List<User> list = Arrays.asList( new User("王五",21,1000), new User("张三",20,3000), new User("李四",20,2000), new User("sss",20,2000), new User("eee",20,2000) ); //把第一页封装为一个Page对象 Page<User> page = CommonUtils.getPage(list,"1"); //获取当前页包含的内容 System.out.println(page.getContent()); //获取总条数 System.out.println(page.getTotalElements()); } }