本文介绍JDBC的实践案例,是对JDBC的综合操作讲解(文中附有详细代码)
了解并熟悉JDBC,请看我的另一篇文章:
1、需求
需求:完成商品品牌数据的增删改查操作(增删改查)
①查询:查询所有数据
②添加:添加品牌
③修改:根据id修改
④删除:根据id删除
2、工程目录
最终完成后的工程目录如下:
2.1、工程目录说明
该工程下的JDBC模块存放此次实践案例的相关文件。
模块下创建了两个文件:lib和src。
lib放的是需要的驱动jar包
src放的是主要实现代码和Druid框架的配置文件druid.properties。
2.2、src文件
src下有两个二级包,分别为com.operation和com.sql。
①operation包下有两个类:分别是encapsulationTool封装工具类和operations操作类。
encapsulationTool的内容是把表单信息添加进实体类,后续有详细说明
operations是本次的主体,里面包含了所有本次需求的实现代码
②sql包下有两个类:分别是information表单信息类和sqlInitialForMySQL初始化类
information是MySQL中的commodity数据库中的information表的实体类
sqlInitialForMySQL是将JDBC的八个步骤中一些相同的步骤提取出来单独成类来实现,
以达到简化代码量的效果
3、准备工作
3.1、⭐开启MySQL
本次的实践案例连接的是本地的MySQL数据库,所以要记得开启本地的MySQL服务。
如果不开启服务,所有的操作一律报错。
操作:
win+R,cmd,按住Ctrl+Shift+Enter,以管理员模式打开终端。
命令->开启:net start mysql
关闭:net stop mysql
3.2、数据初始化
接下来要先创建一个commodity商品类型的数据库,在该数据库中创建一个information表单来存储信息,在information表单中创建具体的表存储信息。如下:
information表中依次存放六种信息:
id:唯一标识,使用主键约束(primary key),设置自动增长(auto_increment);
brand:品牌名称
company:公司名称
sort:排序字段 (注:在本次实践案例中暂时没用上)
description:描述信息
status:状态信息,只有0和1两种,分别代表禁用、启用。 (注:在本次实践案例中暂时没用上)
3.3、导入驱动包
本次案例实践的驱动包一共有四个:
druid-1.1.12.jar
hamcrest-core-1.3.jar
junit-4.13.1.jar
mysql-connector-java-5.1.48.jar
将上述四个驱动包导入到lib文件夹,并添加到项目依赖中。
3.4、驱动包介绍
Druid和MySQL驱动包的解释,详细查看我的另一篇文章中的 "5、数据库连接池" :
junit驱动主要是用来编写单元测试类,代替实践案例中所需要的main方法。
如果不导入hamcrest驱动,使用junit的测试注解会出现问题:
3.5、回顾JDBC代码步骤
3.5.1、原先步骤
3.5.2、🔺🔺改进步骤
说明:
在原来的JDBC八个步骤中,第一步导入jar包的操作,在一开始已经完成了;
第二部注册驱动,在MySQL 5开始的驱动包中不需要手动注册,会自动扫描驱动
第三步获取连接,原来的获取方式有造成资源浪费的明显缺点,所以由连接池代替
第五步获取执行对象,存在SQL注入漏洞,所以由获取预编译执行对象代替
所以,改进完成之后的JDBC操作为十个步骤:
- 导入相关jar包
- 定义Druid的druid.properties配置文件
- 加载配置文件
- 获取连接池对象
- 获取连接
- 定义SQL
- 获取预编译SQL执行对象
- 执行SQL
- 处理结果
- 释放资源
4、代码实现
4.1、druid.properties
关于这个配置文件的书写,详细查看我另一篇文章中的 "5.3.2、定义配置文件":