赞
踩
---恢复内容开始---
分页查询
分页查询是java web开发中经常使用到的技术。在数据库中数据量非常大的情况下,不适合将所有的数据全部显示到一个页面中,同时为了节约程序以及数据库的资源,就需要对数据进行分页查询操作。
通过JDBC实现分页的方法比较多,而且不同的数据库机制其分页的方式也不同,这里我们介绍典型的两个分页方法。
1.通过ResultSet的光标实现分页
该分页方法可以在各种数据库之间通用,但是带来的缺点是占用了大量的资源,不适合在数据库大的情况下使用。
2.通过数据库机制进行分页
很多数据库都会提供这种分页机制,例如SQLServer中就提供了top关键字,mysql数据库中提供了limit关键字,用这些关键字都可以设置数据返回的记录数。使用这种分页查询方式可以减少数据库的资源开销,提高程序效率,但是缺点是只适应于一种数据库。
注:因为第一种不适合在数据量大的情况下使用,所以在实际开发中也不使用该方式来查询数据,我们只对第二种方式做介绍
例:通过mysql的数据分页机制来实现商品信息的分页查询功能,并将信息显示在jsp页面中
(1)创建一个商品信息属性Product类,用来保存商品属性,此类为JavaBean
1 packagecom.bean;2
3 public classProduct {4 public static final int PAGE_SIZE = 2; //每一页显示几行数据5 //编号
6 private intid;7 //名称
8 privateString name;9 //价格
10 private doubleprice;11 //数量
12 private intnum;13 //单位
14 privateString unit;15 public intgetId() {16 returnid;17 }18 public void setId(intid) {19 this.id =id;20 }21 publicString getName() {22 returnname;23 }24 public voidsetName(String name) {25 this.name =name;26 }27 public doublegetPrice() {28 returnprice;29 }30 public void setPrice(doubleprice) {31 this.price =price;32 }33 public intgetNum() {34 returnnum;35 }36 public void setNum(intnum) {37 this.num =num;38 }39 publicString getUnit() {40 returnunit;41 }42 public voidsetUnit(String unit) {43 this.unit =unit;44 }45 }46
47 Product.java代码
Product.java代码
java中一般静态常量我们采用大写字母表示。这是一种java书写规范
(2)创建BookDao类,此类中主要实现了getConnection()方法连接到数据库的操作以及分页查询所有信息的方法find(int page)、查询记录总数的方法findCount()。代码如下:
1 packagecom.bean;2 importjava.sql.Connection;3 importjava.sql.DriverManager;4 importjava.sql.PreparedStatement;5 importjava.sql.ResultSet;6 importjava.sql.SQLException;7 importjava.sql.Statement;8 importjava.util.ArrayList;9 importjava.util.List;10 public classBookDao {11 publicConnection getConnection() {12 //数据库连接
13 Connection conn = null;14 try{15 //加载数据库驱动,注册到驱动管理器
16 Class.forName("com.mysql.jdbc.Driver");17 //数据库连接字符串
18 String url = "jdbc:mysql://localhost:3306/db_database10";19 //数据库用户名
20 String username = "root";21 //数据库密码
22 String password = "123456";23 //创建Connection连接
24 conn =DriverManager.getConnection(url,username,password);25
26 }catch(ClassNotFoundException e) {27 e.printStackTrace();28 }catch(SQLException e) {29 e.printStackTrace();30 }31 returnconn;32 }33
34 /**
35 * 分页查询所有信息36 *@parampage 页数37 *@returnList38 */
39 public List find(intpage){40
41 //创建List
42 List list = new ArrayList();43 //获取数据库连接
44 Connection conn =getConnection();45 //分页查询的SQL语句
46 String sql = "select * from tb_product order by id desc limit ?,?";47 try{48 //获取PreparedStatement
49 PreparedStatement ps =conn.prepareStatement(sql);50 //SQL语句中的第1个参数赋值
51 ps.setInt(1, (page - 1) *Product.PAGE_SIZE);52 //对SQL语句中的第2个参数赋值
53 ps.setInt(2, Product.PAGE_SIZE);54 //执行查询操作
55 ResultSet rs =ps.executeQuery();56 //光标向后移动,并判断是否有效
57 while(rs.next()) {58 //实例化Product
59 Product p = newProduct();60 //对id属性赋值
61 p.setId(rs.getInt("id"));62 //对name属性赋值
63 p.setName(rs.getString("name"));64 //对num属性赋值
65 p.setNum(rs.getInt("num"));66 //对price属性赋值
67 p.setPrice(rs.getDouble("price"));68 //对unit属性赋值
69 p.setUnit(rs.getString("unit"));70 //将Product添加到List结合中
71 list.add(p);72 }73 //关闭ResultSet
74 rs.close();75 //关闭PreparedStatement
76 ps.close();77 //关闭Connection
78 conn.close();79 }catch(SQLException e) {80 e.printSt
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。