第4章 Spring 的数据库开发
学习目标
- JdbcTemplate 类中几个常用方法的使用
- Spring JDBC 的配置
- Spring 中 JDBC 模块的作用
主要内容
- 4.1 Spring JDBC
- 4.2 Spring JdbcTemplate 的常用方法
4.1 Spring JDBC
Spring JDBC 模块有什么作用?
Spring 的 JDBC 模块负责数据库资源管理和错误处理,大大简化了开发人员对数据库的操作,使得开发人员可以从繁琐的数据库操作中解脱出来,从而将更多的精力投入到编写业务逻辑当中。
4.1.1 Spring JdbcTemplate 的解析
针对数据库的操作,Spring 框架提供了 JdbcTemplate 类,该类是 Spring 框架数据抽象层的基础。可以说,JdbcTemplate 类是 Spring JDBC 的核心类。
JdbcTemplate 类的继承结构具体如下图所示:

从 JdbcTemplate 的继承关系图可以看出,JdbcTemplate 类的直接父类是 JdbcAccessor,该类为子类提供了一些访问数据库时使用的公共属性。
- DataSource: 其主要功能是获取数据库连接,还可以引入对数据库连接的缓冲池和分布式事务的支持,它可以作为访问数据库资源的标准接口。
- SQLExceptionTranslator:该接口负责对 SQLException 进行转译工作。通过必要的设置获取 SQLExceptionTranslator 中的方法,可以使 JdbcTemplate 在需要处理 SQLException 时,委托 SQLExceptionTranslator 的实现类来完成相关的转译工作。
而 JdbcOperations 接口定义了在 JdbcTemplate 类中可以使用的操作集合,包括添加、修改、查询和删除等操作。
4.1.2 Spring JDBC 的配置
Spring JDBC 模块主要由 4 个包组成,分别是 core、dataSource、object(和 support。
| 包名 | 说明 |
|---|---|
| core(核心包) | 包含了 JDBC 的核心功能,包括 JdbcTemplate 类、 SimpleJdbclnsert 类、 SimpleJdbcCal1 类以及 NamedParameterJdbcTemplate 类 |
| dataSource(数据源包) | 访问数据源的实用工具类,白有多种数据源的实现,可以在 Java EE 容器外部测试 JDBC 代码 |
| object(对象包) | 以面向对象的方式访问数据库, 它允许执行查询并将返回结果作为业务对象,可以在数据袤的列和业务对象的属性之间映射查询结果 |
| support(支持包) | 包含了 core 和 object 包的支持类,例如,提供异常转换功能的 SQLException 类 |
从上表可以看出,Spring 对数据库的操作都封装在了这几个包中,而想要使用 Spring JDBC,就需要对其进行配置。
<!-- 1.配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/spring"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!--2.配置JDBC模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 3.配置需要实例化的Bean -->
<bean id="xxx" class="Xxx">
<!-- 注入JDBC模板 -->
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
4.2 Spring JdbcTemplate 的常用方法
在 JdbcTemplate 核心类中,提供了大量的更新和查询数据库的方法,我们就是使用的这些方法来操作数据库的。
- execute
execute(String sql)方法可用于执行 sql 语句 - update
update()用于执行插入、更新和删除操作 - query
query()用于执行数据查询操作
使用 execute(String sql) 方法执行建表的案例实现步骤如下:
- 在 MySQL 中创建一个名为 spring 的数据库;
- 创建 Web 项目,导入相关 Jar 包;
- 创建 Spring 配置文件,配置数据源和 JDBC 模板;
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/spring" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
- 创建测试类,测试程序。
public class JdbcTemplateTest {
public static void main(String[] args) {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jdTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
jdTemplate.execute("create table account(" +
"id int primary key auto_increment," +
"username varchar(50)," +
"balance double)");
}
}
4.2.1 execute
扩展:使用 JUnit 单元测试
在软件开发过程中,需要有相应的测试工作。依据测试目的不同,可以将软件测试分为单元测试、集成测试、确认测试和系统测试等。其中单元测试在软件开发阶段是最底层的测试,它易于及时发现并解决问题。JUnit 就是一个进行单元测试的开源框架,下面以上个示例,来学习单元测试框架 JUnit4 的使用。
JUnit 单元测试的使用:
- 在方法上添加单元测试的注解
@Test,同时修改为普通方法
@Test
public void mainTest() {
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jdTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
jdTemplate.execute("create table account(" +
"id int primary key auto_increment," +
"username varchar(50)," +
"balance double)");
}
- 引入支持 JUnit 的 Jar 包

- 使用 JUnit Test 进行单元测试

- JUnit 控制台进度条显示绿色即运行成功

4.2.2 update
update() 方法可以完成插入、更新和删除数据的操作。在 JdbcTemplate 类中,提供了一系列的 update() 方法,其常用方法下表所示:

接下来,通过一个用户账户管理的案例来演示 update()方法的使用,请查看教材 4.2.2 小节。
4.2.3 query
JdbcTemplate 类中还提供了大量的 query() 方法来处理各种对数据库表的查询操作。其中,常用的几个 query()方法如下表所示:

接下来,通过一个单个查询和查询所有的案例来演示 query() 方法的使用,请查看教材 4.2.3 小节。
4.3 本章小结
本章对 Spring 框架中,使用 JDBC 进行数据操作的知识进行了详细讲解。首先讲解了 Spring JDBC 中的核心类以及如何在 Spring 中配置 JDBC,然后通过案例讲解了 Spring JDBC 核心类JdbcTemplate中常用方法的使用。
通过本章的学习,读者能够学会如何使用 Spring 框架进行数据库开发,并能深切的体会到 Spring 框架的强大。
练习
- 请简述 Spring JDBC 是如何进行配置的。
- 请简述 Spring JdbcTemplate 类中几个常用方法的作用。

浙公网安备 33010602011771号