【JDBC】学习路径4-分页查询

Posted on 2022-05-23 11:17  罗芭Remoo  阅读(67)  评论(0编辑  收藏  举报

第一章:什么是分页查询呢?

 

简而言之,分页数 就是百度搜索引擎中的网页的页数。

分页查询,就是从数据库中提取一部分出来,给用户。

用处:减少服务器负担。

 

 


为了方便测试,我们先给数据库添加大量信息。

还是使用我们的user表格,添加大量数据代码:(大家可以自行添加,也可以直接使用sakila的测试表格。

 


第二章:分页原理

 

分页我们使用SQL关键字:

   limit 位置偏移量,步进

    实现数据库限定数据条数查询

位置偏移量: 第几行数据(从0开始数的)

步进   : 从位置偏移量往后读多少行

  eg:第一页要显示8行 limit 0,8查找的数据:0-7

  eg:第二页要显示8行 limit 1,8查找的数据:8-15

 

全部数据:

分页查询:

第一页:

  select * from user limit 0,8;

第二页:

  select * from user limit 8,8;

。。。

以此类推即可。


第三章:将理论应用到实际

//page表示 页数 num表示一个有多少条数据
public static boolean selectPage(int page,int num){
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    try {
        Class.forName("com.mysql.cj.jdbc.Driver");

        String url = "jdbc:mysql://localhost:3306/jdbc_01?useUnicode=true&characterEncoding=UTF8";
        con = DriverManager.getConnection(url,"root","88888888");

        String sql = "select * from user limit ?,?";
        pstmt = con.prepareStatement(sql);
        pstmt.setInt(1,(page-1)*num);
        pstmt.setInt(2,num);

        rs = pstmt.executeQuery();

        while (rs.next()){
            int ID = rs.getInt("id");
            String username = rs.getString("username");
            String password = rs.getString("password");
            System.out.println(ID + "\t"+username + "\t" + password);
        }
        return true;

    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    return false;
}

 

 在main中调用:

selectPage(1,8);