《Spring技术内幕》学习笔记11——JdbcTemplate封装Jdbc

本文详细介绍了Spring中JdbcTemplate如何封装Jdbc,包括配置数据源、注入JdbcTemplate、使用JdbcTemplate进行数据库操作,并分析了其工作流程,如处理Statement、PreparedStatement和CallableStatement的方法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Spring中使用JdbcTemplate封装对Jdbc的支持,使用Spring JdbcTeamplate的例子如下:

(1). 假设如下SQL表中有数据username=test1,passwd=test1,address=test1

(2).Spring配置文件中添加关于数据源和JdbcTeamplate的配置如下:

(3).Java持久化对象如下:

(4).使用JdbcTeamplateDAO如下:

2.Spring JdbcTemplate的工作流程:

通过1中的小例子,我们可以总结出SpringJdbcTemplate的工作流程如下:

(1).配置数据源:

Spring中,将管理数据库连接的数据源当作普通Java Bean一样在Spring IoC容器中管理,当应用使用数据源时Spring IoC容器负责初始化数据源。

(2).将数据源注入JdbcTemplate

JdbcTemplatedataSource属性用于注入配置的数据源,Spring IoC容器通过依赖注入将配置的数据源注入到SpringJdbc操作的封装类JdbcTemplate中。

(3).应用中使用JdbcTemplate

注入了数据源的JdbcTemplate就可以在应用中使用了,应用中对数据源的增删改查等操作都可以使用JdbcTemplate对外提供的方法操作数据库。

3.JdbcTemplate处理Statement的相关方法实现:

JdbcTemplateexecute方法是JdbcTemplate的核心方法,是JdbcTemplate调用jdbc进行查询,添加,删除和更新操作的基础方法,在execute方法中,主要实现对数据库的基本操作,如:获取数据库连接;根据应用对数据库的需要创建数据库的Statement;对数据库操作进行回调;处理数据库异常;关闭数据库连接等等。JdbcTemplate中有真的JdbcStatementPreparedStatementCallableStatement处理的execute方法,首先我们分析处理Statement的相关方法:

(1).处理Statementexecute方法:

Execute方法是JdbcTemplate执行jdbc操作的核心,其他的方法都是通过调用execute方法来操作数据库。

(2). Statement的查询方法:

JdbcTemplate处理Statement的查询方法有很多,但是其中最基本的方法源码如下:

(3).Statement的更新方法:

通过对Statement相关处理的方法源码分析,我们可以看出execute方法是核心方法,在execute方法中,主要获取数据库连接和创建Statement,同时当执行完jdbc操作之后释放连接和资源等数据库操作的通用流程,所有的查询,更新等具体操作均是通过向execute方法传递合适的回调参数来使用execute方法中的数据库通用流程和资源,真正执行jdbc操作的方法由具体的回调内部类来实现。

4.JdbcTemplate处理PreparedStatement的相关方法实现:

 

(1).处理PreparedStatementexecute方法:

(2). PreparedStatement的查询方法:

Statement类似,JdbcTemplatePreparedStatement的查询方法也非常多,我们以最基本的查询方法源码为例分析其处理流程:

(3). PreparedStatement的更新方法:

通过对PreparedStatement相关处理方法的源码分析,我们可以看到PreparedStatementStatement的处理流程基本是相同的,不同之处在于PreparedStatement需要处理设置参数值的操作。

5.JdbcTemplate处理CallableStatement的相关方法实现:

(1).处理CallableStatementexecute方法:

(2).CallableStatementcall方法:

通过上面对CallableStatement相关处理方法的源码分析我们可以看到,execute方法基本和StatementPreparedStatement是相同的,不同之处在于CallableStatement是通过jdbc调用数据库的存储过程,对于输入输出参数的组装,以及返回结果的处理方面有些特殊处理。

6.JdbcTemplate通过DataSourceUtils获取数据库连接:

JdbcTemplateexecute方法中通过DataSourceUtils.getConnection(getDataSource());获取数据库连接,下面我们就分析DataSourceUtils类获取数据库连接的实现过程:

 

通过对JdbcTemplate的源码分析,我们看到Spring只是将jdbc的一些常用操作封装,将通用的获取数据库连接、创建创建Statement、关闭资源释放连接等操作封装在不同种类的execute方法中,同时调用不同的回调处理Action来具体执行jdbc操作,对jdbc熟悉的人很容易看懂这部分源码,当然Spring还对jdbc进行了一些高级的封装和扩展,例如RowMapper将结果集转换为指定对象等,这部分有兴趣可以自己研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值