天天看点

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

【正文】

一、jdbc事务处理:

我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败。在mysql中提供了commit、rollback命令进行事务的提交与回滚。实际上在jdbc中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成。

jdbc中事务处理的步骤:

1、要取消掉jdbc的自动提交:void setautocommit(boolean autocommit)

2、执行各个sql语句,加入到批处理之中

3、如果所有语句执行成功,则提交事务 commit();如果出现了错误,则回滚:rollback()

核心代码:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

代码举例:

首先在sql中创建一个空的数据库,现在在java中,使用preparedstatement插入数据并修改数据。正常情况下,代码应该这样写:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

事务处理:

现在我们把上面的插入操作和修改操作变成一个事务,就要增加一部分代码了。修改上方的insertandquery()方法里面的代码:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

核心代码是第07行、19行、28行。这三行代码就完成了事务处理的操作。两个sql语句中,只要有一个语句出现错误,程序将无法运行,说明事务提交失败,且报错如下:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

二、封装jdbc工具类

之前的jdbc代码分析:

我们可以先回顾一下上一篇博文中的第五段:使用preparedstatement重构增删改查。

通过分析可以发现有以下不足:有许多重复的代码、每次都要加载驱动、获取连接等。增删改查无非只是slq语句不一样而已。

封装工具类就是一个抽象的过程,我们可以把现在代码中非常公用的代码抽取出来,形成一个工具类。

第一步:抽象公共的代码到工具类。

第二步:为提高可以连接不同数据库的能力,将连接数据库的url、用户名,密码等信息编写在一个属性文件(jdbc.properties)中,方便以后进行修改。 

我们先把之前的文章中,使用preparedstatement查询数据库的代码贴出来,方便和后面的内容进行对比,省的翻来翻去麻烦。

使用preparedstatement查询数据库:(重构前)

在这之前,请建好一个person类,参考上一篇博文就行了。然后,jdbctest.java的代码如下:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

接下来开始真正的工作了,从零开始。

封装工具类:

新建工程文件,结构如下:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

(1)先新建一个dbutils工具类:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

28行:既然是工具类,一般不要实例化,此时可以采用单例设计模式,或者将构造方法私有化。

26行:很明显可以看到,我们是将连接数据库的url、用户名,密码等信息编写在一个属性文件(jdbc.properties)中,稍后再来定义这个属性文件。

31行:为避免重复代码,使用静态代码块:只会在类加载的时候执行一次。

42行:定义一个获取数据库连接的方法

60行:关闭数据库连接

(2)接下来新建一个属性文件,new-->file,命名为:db-config.properties,代码如下:

以后如果需要修改配置信息,只需要在这里改就行了。注意在上面的dbutils类中是怎么来调用这个配置信息的。

(3)紧接着新建文件,定义好person类:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

(4)然后开始编写主程序来测试一下:

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

测试程序是可以运行的。这样,我们的工具类就建好了。