Java Web的数据库操作

前面介绍了JDBC技术和JDBC API及API的使用示例,下面详细介绍JDBC在Web中的应用。

Java Web----Java Web的数据库操作(一)

Java Web----Java 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数据库实现分页查询的源码,可以参考下:

http://download.csdn.net/detail/zhai56565/5885775

最新文章

  1. .NET框架解决的问题
  2. il c井
  3. 7.openstack之mitaka搭建dashboard
  4. QT连接MySQL
  5. MySQL忘记root密码的找回方法
  6. tcp MSL
  7. Java_JDK_HashMap
  8. Debugging a Parallel Application
  9. Linux 基本命令学习笔记
  10. SQL Server 2005中约束
  11. rman catalog (rman 恢复目录)
  12. Linux下关闭node应用
  13. codeforces 569A Music
  14. myql_链接丢失异常_mybaits _等框架_报错_The last packet successfully
  15. javascript继承之借用构造函数与原型
  16. log4j使用和配置详解
  17. include指令与include动作的区别(面试要考)
  18. 错误:Unsupported major.minor version 51.0的解决
  19. March 11th, 2018 Week 11th Sunday
  20. FAT文件系统规范v1.03学习笔记---1.保留区之启动扇区与BPB

热门文章

  1. HDU 6197 array array array 2017沈阳网络赛 LIS
  2. TreeSet之定制排序和自然排序
  3. ASPLOS'17论文导读——SC-DCNN: Highly-Scalable Deep Convolutional Neural Network using Stochastic Computing
  4. WP SMTP插件为啥我一直设置的不对?
  5. 解决wordpress无法发送邮件的问题|配置好WP-Mail-SMTP的前提
  6. postgresql 数据导入导出
  7. 快速开发window服务器程序
  8. CentOS7 安装 chrome-gnome-shell
  9. intellij自动生成java代码注释(java文件注释和方法注释)
  10. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) E - Goods transportation 最大流转最小割转dp