06 分页

文章目录

PageInfo

java 复制代码
package com.aistart.tech.common;

import java.io.Serializable;
import java.util.List;

public class PageInfo<T> implements Serializable {
    private Integer pageNum;//当前页

    private Integer pageSize;//每页显示条数

    private Integer pageTotal;//总的页数

    private Integer rows;//总的条数

    private List<T> dataList;

    public Integer getPageNum() {
        return pageNum;
    }

    public void setPageNum(Integer pageNum) {
        this.pageNum = pageNum;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getPageTotal() {
        return pageTotal;
    }

    public void setPageTotal(Integer pageTotal) {
        this.pageTotal = pageTotal;
    }

    public Integer getRows() {
        return rows;
    }

    public void setRows(Integer rows) {
        this.rows = rows;
    }

    public List<T> getDataList() {
        return dataList;
    }

    public void setDataList(List<T> dataList) {
        this.dataList = dataList;
    }

    public PageInfo(Integer pageNum, Integer pageSize, Integer pageTotal, Integer rows, List<T> dataList) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.pageTotal = pageTotal;
        this.rows = rows;
        this.dataList = dataList;
    }

    public PageInfo() {
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("PageInfo{");
        sb.append("pageNum=").append(pageNum);
        sb.append(", pageSize=").append(pageSize);
        sb.append(", pageTotal=").append(pageTotal);
        sb.append(", rows=").append(rows);
        sb.append(", dataList=").append(dataList);
        sb.append('}');
        return sb.toString();
    }
}

创建一个List<String>集合

创建一个连接

根据连接创建一个操作对象,执行sql,sql语句有两个占位符,分别代表之前页所有数量,每页数量

操作对象返回结果集

将数据存到list中

关闭

java 复制代码
public List<String> getEmpName(int pageSize, int pageNum) throws Exception {
        List<String> list = new ArrayList<>();

        Connection connection = JDBCUtil.getConnection();

        PreparedStatement preparedStatement = connection.prepareStatement("select first_name from employees limit ?,?;");

        preparedStatement.setInt(1,pageSize*(pageNum-1));
        preparedStatement.setInt(2,pageSize);

        ResultSet resultSet = preparedStatement.executeQuery();

        while (resultSet.next()){
            list.add(resultSet.getString(1));
        }

        JDBCUtil.closeAll(connection,preparedStatement,resultSet);

        return list;


    }




@Test
    public void empLimitTest() throws Exception {
         List<String> empName = iEmpDao.getEmpName(3, 2);

         PageInfo<String> stringPageInfo = new PageInfo<>();

         stringPageInfo.setDataList(empName);
         stringPageInfo.setPageNum(2);
         stringPageInfo.setPageSize(3);
         stringPageInfo.setRows(107);
         stringPageInfo.setPageTotal(107/3);

         for (String s : empName) {
             System.out.print(s+" ");
         }

         System.out.println(stringPageInfo);
     }

创建PageInfo对象

PageInfo设置每页数量和第几页

创建连接

根据连接创建操作对象,执行sql

返回结果集

java 复制代码
public PageInfo<String> findNameAllByPage(int pageSize, int pageNum) {

        PageInfo<String> stringPageInfo = new PageInfo<>();

        stringPageInfo.setPageSize(pageSize);
        stringPageInfo.setPageNum(pageNum);
        List<String> list = new ArrayList<>();

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            connection = JDBCUtil.getConnection();
            preparedStatement = connection.prepareStatement("select count(*) from employees;");
            ResultSet resultSet = preparedStatement.executeQuery();

            if(resultSet.next()){
                //获取总条目数
                int rows = resultSet.getInt(1);

                //赋值共有多少行
                stringPageInfo.setRows(rows);

                //赋值共有多少页,取整
                stringPageInfo.setPageTotal(rows/pageSize);

            }

            /*
            * 跟上面一样获取一个list<string>
            * */
            stringPageInfo.setDataList(getEmpName(pageSize,pageNum));
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }


        return stringPageInfo;
    }


@Test
    public void limitTest(){
         PageInfo<String> nameAllByPage = iEmpDao.findNameAllByPage(4, 5);

         System.out.println(nameAllByPage);
     }
相关推荐
IT19956 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时
数据库·mysql
夕除6 小时前
redis--IO 多路复用(select + poll)
数据库·sql
paopaokaka_luck9 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
lzhdim10 小时前
100条常用SQL语句
数据库·sql·mysql·mybatis
天河归来10 小时前
从原始消息到业务数据:三层数据架构的设计与实践
数据库·数据仓库·架构
数据库小学妹10 小时前
金融数据库成本怎么算?五笔钱加一张TCO表
数据库·金融行业·数据库选型·国产化替代·tco·金融数据库
KaiwuDB10 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
auspicious航11 小时前
PostgreSQL的备份与恢复
数据库·postgresql
这个DBA有点耶11 小时前
从 MySQL 到时序数据库:我帮朋友做迁移的完整记录
数据库·架构·dba
泡海椒11 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql