分页代码(注释+代码)

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

public class PageUtil<T> implements Serializable {

    private int page;//当前页
    private int pre;//上一页
    private int next;//下一页
    private int totalpage;//尾页
    private int size;//每页多少条
    private Long total;//总记录数
    private List<T> rows;//当前页记录

    //自己实现自己
    public static void main(String[] args) {
        new PageUtil<>();
    }

    //无参构造
    public PageUtil() {
    }

    //有参构造

    public PageUtil(int page, int size, Long total, List<T> rows) {
        this.page = page;

        //三目运算符
        //判断当前页大于1,则当前页-1,否则当前就在第一页
        this.pre = page>1?page-1:1;//上一页
        //判断当前页小于尾页,则当前页+1,否则当前页就在尾页
        this.next = page<this.totalpage?page+1:this.totalpage;//下一页
        //计算总页数(总页数),总记录数%每页条数,如果等于0,则没有余数,不需要再加一页,否则再            
        //加一页,放余出来的记录数
        this.totalpage = (int) (total%size==0?total/size:(total/size+1));
        this.size = size;
        this.total = total;
        this.rows = rows;
    }

    //get/set赋值取值
    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getPre() {
        return pre;
    }

    public void setPre(int pre) {
        this.pre = pre;
    }

    public int getNext() {
        return next;
    }

    public void setNext(int next) {
        this.next = next;
    }

    public int getTotalpage() {
        return totalpage;
    }

    public void setTotalpage(int totalpage) {
        this.totalpage = totalpage;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public Long getTotal() {
        return total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public List<T> getRows() {
        return rows;
    }

    public void setRows(List<T> rows) {
        this.rows = rows;
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当我们需要查询大量数据时,通常需要使用分页查询,将结果分成多个页面返回给用户,以提高查询效率和用户体验。以下是使用Java代码实现分页查询的示例,带有注释说明每个重要步骤的作用。 ``` public List<User> findUsersByPage(int pageNum, int pageSize) { // 计算起始记录的索引 int startIndex = (pageNum - 1) * pageSize; // 构造SQL语句,使用LIMIT关键字来实现分页 String sql = "SELECT * FROM user LIMIT ?, ?"; try (Connection conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql)) { // 设置查询参数 ps.setInt(1, startIndex); ps.setInt(2, pageSize); // 执行查询,获取结果集 ResultSet rs = ps.executeQuery(); // 构造User对象列表,用于存放查询结果 List<User> users = new ArrayList<>(); // 遍历结果集,将每个记录转换为User对象并添加到列表中 while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); // ...其他属性赋值 users.add(user); } // 返回查询结果 return users; } catch (SQLException e) { // 处理异常 e.printStackTrace(); return null; } } ``` 在这个示例中,我们使用了Java的JDBC API来连接数据库,并使用MySQL的LIMIT语句来实现分页查询。具体步骤如下: 1. 首先计算起始记录的索引,这个索引可以通过pageNum和pageSize计算得出。例如,如果pageNum=3,pageSize=10,则起始索引为20。 2. 构造SQL语句,使用占位符(?)来表示参数。这里我们使用了LIMIT语句来限制返回的记录数,第一个参数表示起始索引,第二个参数表示返回的记录数。注意,MySQL中LIMIT的起始索引是从0开始的。 3. 使用JDBC API获取数据库连接,创建PreparedStatement对象,并设置查询参数。在这个示例中,我们设置了两个参数,分别是起始索引和返回记录数。 4. 执行查询,获取结果集。在JDBC中,查询结果通常以ResultSet对象的形式返回。 5. 遍历结果集,将每个记录转换为User对象,并添加到User列表中。 6. 返回查询结果。 需要注意的是,在实际应用中,我们通常还需要对pageNum和pageSize进行合法性检查,防止出现非法参数导致的异常或安全问题。同时,还需要对查询语句中的关键字进行转义,防止SQL注入攻击。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值