java 手写一个分页工具类

本文介绍了数据库分页的概念和好处,如减少数据库和浏览器之间的IO传输,提高响应速度,并减少资源浪费。通过示例展示了如何使用SQL的limit关键字进行分页查询。此外,提供了一个Java工具类`CommonUtils`,用于将数据列表转换为Spring Data的Page对象,实现分页功能。
摘要由CSDN通过智能技术生成

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());


    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值