Java Web的数据库操作
前面介绍了JDBC技术和JDBC API及API的使用示例,下面详细介绍JDBC在Web中的应用。
四、JDBC在Java Web中的应用
通常情况下,Web程序操作数据库都是通过JDBC实现,即使目前数据库方面的开源框架有许多,但其底层实现都离不开JDBC API。
1、开发模式
在Java Web开发中使用JDBC,应遵循MVC的设计思想,从而使Web程序拥有一定的健壮性、可扩展性。每个Java Web程序员都应该深谙MVC的设计思想,下面对其简单介绍。
MVC(Model-View-Controller)是一种设计理念,该理念将软件分成3层结构,分别为模型层、视图层和控制层。
- 模型层泛指程序中的业务逻辑,用于处理真正的业务操作;
- 视图层是指程序与用户交互的界面,对用户呈现出视图,但不包括业务逻辑;
- 控制层是对用户各种请求的分发处理,将制定的请求分配给制定的业务逻辑进行处理。
JDBC应用于Java Web开发中,处于MVC中的模型层位置,如图所示:
客户端通过JSP页面与程序进行交互,对于数据的增、删、改、查请求由Servlet对其进行分发处理,如Servlet接收到添加数据请求,就会分发给增加数据的JavaBean对象,而真正的数据库操作是通过JDBC封装的JavaBean进行实现。
2、分页查询
分页查询用于在数据库量非常大,不适合将所有数据显示在一页中的情况。通过JDBC实现分页查询的方法有很多种,而且不同的数据库机制也提供了不同的分页方式,在这里介绍两种非常典型的分页方法:
1)、通过ResultSet的光标实现分页
ResultSet为查询结果集对象,在该对象中有一个“光标”的概念(可以参考第一篇中的JDBC API介绍),光标通过上下移动定位查询结果集中的行,从而获取数据。所以通过移动“光标”,可以设置ResultSet对象中记录的起始位置和结束为止,来实现数据的分页显示。
2)、通过数据库机制进行分页
很多数据库自身都提供了分页机制,如SQL Server中提供的top关键字,MySQL中提供的limit关键字,他们都可以设置数据返回的记录数。
下面是MYSQL数据库提供的分页机制,关键代码如下:
String sql = "SELECT * FROM tb_book ORDER BY id DESC LIMIT ?,?"; PreparedStatement ps = connection.prepareStatement(sql); ps.setInt(1, (page - 1)*Book.PAGE_SIZE);//page为页数 ps.setInt(2, Book.PAGE_SIZE); ResultSet rs = ps.executeQuery();
Limit关键字能够控制查询数据结果集起始位置及返回记录的数量,它的两个参数分别用于指定查询记录的其实位置和所返回的记录数。而返回总记录数可以使用以下方法:
int count = 0; String sql = "SELECT count(*) FROM tb_book"; Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); if (resultSet.next()) count = resultSet.getInt(1);
下面是一个使用MySQL数据库实现分页查询的源码,可以参考下: