任务5.1 某商城系统中商品管理
/01支撑知识--数据库连接
一、JDBC简介
1、JDBC的全称为Java Data Base Connectivity,它是一个面向对象的应用程序接口(API)。
2、JDBC的最大特点是它独立于具体的关系数据库。
3、JDBC是连接数据库和Java应用程序的纽带,通过它可以访问各种关系数据库。
4、JDBC在Java程序中所起的作用
(1)与数据库建立连接.
(2)向数据库发送SQL语句。
(3)获取并处理结果。

二、JDBC驱动程序
1、JDBC是一个编程接口集合,具体的连接数据库和操作数据库的功能并没有实现,具体的功能实现则由特定的JDBC驱动程序完成。

(1)JDBC-ODBC桥
JDBC-ODBC桥驱动程序由SUN公司开发,是JDK提供的数据库操作标准API。特点主要是:①不需要下载JDBC驱动程序。
②由于JDBC-ODBC桥驱动程序经过几次中间调用,所以执行效率比较低。

(2)本地API部分支持Java技术驱动
这种驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、DB2或其他DBMS(Database Management System)的调用,通过直接映射特定数据库厂家的DBMS库接口实现。特点主要是:
① 需要在客户机上安装本地的JDBC驱动程序和特定厂商的本地API。
② 数据库访问的效率高。

(3)JDBC网络驱动
将JDBC映射到与DBMS厂家无关的网络协议中间件,再由这些中间件映射到特定的DBMS厂家的接口。特点主要是:
①最为灵活的JDBC驱动程序。
②适合于Internet的应用。

(4)本地协议驱动
本地协议驱动通常由数据库厂商直接提供驱动的JAR包,本地协议驱动程序直接将JDBC调用转换为数据库特定的网络通信协议,然后与数据库进行交互。
①纯Java语言编写。
②数据库厂商直接提供。

三、JDBC API
JDBC的核心是为开发人员提供操作数据库的Java API类库,Java程序开发人员可以利用这些类库开发数据库应用程序。
(1) Driver接口
Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。驱动程序的加载可以使用Class.forName()方法,不同的数据库JDBC驱动程序的类名不同。在MySQL 8.0中,通过Class.forName(“com.mysql.cj.jdbc.Driver”) 加载驱动程序。

(2) DriverManager类
使用JDBC连接数据库,需要用到DriverManager类,DriverManager类用于加载JDBC驱动并且创建JDBC程序与数据库的连接。

根据url载入的驱动程序便可以找到对应的数据源并且实现数据库连接,url是由设计驱动程序的人员来命名和指定的,使用者只需要使用驱动程序对应的url即可。
JDBC URL标准的语法: jdbc:
连接MySQL数据库为例,获取数据库连接的java代码示例:

(3) Connection接口
DriverManager类的getConnection()方法返回了一个Connection对象,Connection对象是表示数据库连接的对象,只有获得该连接对象,才能访问并操作数据库。
最常用的createStatement ()方法用于创建SQL语句对象。
Statement stmt = conn.createStatement();

(4) Statement接口
Statement接口用于执行静态的SQL语句,并返回一个结果对象.
// 代码示例
String sql = "select * from user";
// stmt为之前通过Connection对象获取的Statement对象
ResultSet rs = stmt.executeQuery(sql);

(5) PreparedStatement接口
PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。
// 使用PreparedStatement执行SQL语句。
String sql = "select * from user where userId=?"; //占位符?替代参数
PreparedStatement ps = conn.prepareStatement(sql); //通过Connection对象创建PreparedStatement对象
ps.setInt(1, 1); //将指定参数userId设置为int值1
ResultSet rs = ps.executeQuery(); // 执行查询,此处不要有参数

(6) ResultSet接口
ResultSet接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。
// rs对象为ResultSet结果集对象
while (rs.next()) {
int id = rs.getInt("id"); // 通过列名获取指定字段的值
String name = rs.getString("name");
String psw = rs.getString("password");
String email = rs.getString("email");
Date birthday = rs.getDate("birthday");
//输出结果信息
System.out.println(id + " | " + name + " | " + psw + " | " + email + " | " + birthday);
}

/01支撑知识--数据的CRUD操作
支撑知识--数据的CRUD操作
Java中的JDBC是用来连接数据库从而执行相关数据操作的,因此在使用JDBC时,一定要确保安装了数据库。下面以连接MySQL数据库为例,介绍使用JDBC执行相关操作。程序的具体实现步骤如图所示。

JDBC连接数据库测试-示例

JDBC连接数据库工具类DBUtils.java-示例
定义类DBUtils,进行数据库的连接封装。

2.读取(Retrieve)
示例-查询输出用户信息列表

3. 创建(Create)
示例-向用户表中插入新的用户信息

4.更新(Update)
示例-更新用户密码信息

5.删除(Delete)
示例-删除某个用户信息

任务实现 某商城系统中商品信息的展示
商品管理模块,主要实现商品的增加、修改、删除、查看等功能。商品管理的开发过程为:数据访问层设计、业务层设计、控制端设计、视图层设计。


任务5.2 某商城系统中基于连接池实现商品的上下架
支撑知识—数据库连接池
为了避免频繁的创建数据库连接,提出了数据库连接池技术。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接,而不是重新建立。


我们习惯性的把实现了javax.sql.DataSource接口的类称为数据源,顾名思义,数据源即数据的来源,在数据源中存储了所有建立数据库连接的信息。常见的数据源有DBCP数据源和C3P0数据源,接下来对这两种数据源进行详细的讲解。
支撑知识—DBCP数据源
DBCP是数据库连接池(DataBase Connection Pool)的简称,是Apache组织下的开源连接池实现,也是Tomcat服务器使用的连接池组件


(1)通过BasicDataSource创建
使用BasicDataSource类创建一个数据源对象,手动给数据源对象设置属性值,然后获取数据库连接对象


(2)通过读取配置文件创建
使用BasicDataSourceFactory工厂类读取配置文件,创建数据源对象,然后获取数据库连接对象。

DBCP通过读取配置创建数据源-示例

支撑知识—C3P0数据源
C3P0是目前最流行的开源数据库连接池之一,它实现了DataSource数据源接口,支持JDBC2和JDBC3的标准规范,易于扩展并且性能优越,著名的开源框架 Spring使用的即是该数据源。

C3P0通过ComboPooledDataSource创建数据源-示例
通过ComboPooledDataSource创建

C3P0通过读取配置创建数据源-示例

任务实现 某商城系统中购物车信息展示
商品的上下架模块,主要实现商品的上架和下架功能。本任务针对上下架功能开发过程分为以下模块:数据池设计、数据访问层设计、业务层设计、控制端设计、视图层设计。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用现有的数据库连接。

(1)数据库连接池设计
01 增加c3p0的相关依赖
02 创建数据库配置文件
