第一章:什么是分页查询呢?
简而言之,分页数 就是百度搜索引擎中的网页的页数。
分页查询,就是从数据库中提取一部分出来,给用户。
用处:减少服务器负担。
为了方便测试,我们先给数据库添加大量信息。
还是使用我们的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);