JdbcTemplate使用介绍
jdbctemplate使用步骤
原始步骤
- 创建数据源
- 创建JdbcTemplate对象
- 将数据源传入JdbcTemplate对象
- 使用JdbcTemplate对象执行sql语句

但是同样我们呢可以看到,这样的写法依赖性很高

我们可以使用spirng的ioc容器来降低这样的高依赖性
使用ioc容器配置的方式的步骤
- 创建jdbctemplate的bean
- 给jdbctemplate的bean注入datasource
- 创建datasource的bean
- 给datasource的bean注入所需数据(用户名、密码、url、driver)
- 创建核心容器对象
- 使用核心容器对象获取jdbctemplate对象
- 使用获取到的jdbctemplate对象调用执行sql语句的方法执行操作
bean.xml的配置如下


jdbcTemplate的CRUD操作
jdbctemplate对象.update()
该方法可用于进行数据的保存和更新和删除
保存示例

更新示例

删除示例
jdbctemplate对象.query()

该方法的重载方法有很多,我们如何进行选择呢?
我们需要进行分析
我们想使用select * from account where money > 7语句查询结果
这说明我们:sql语句和语句的参数,我们可以把7看成参数
我们需要返回什么:返回一个list的集合
这样我们就定位到我们要使用哪一个重载方法了

这时候参数有一个RowMapper<T>这个么参数,那么这是个什么参数呢?
RowMapper<T>参数
该参数类型是一个接口,我们需要填写一个实现了该接口的类,该类用于定制封装的策略,该接口中的mapRow这个方法则是用于把结果集中的数据封装到RowMapper<T>中的后面的这个T的泛型类型的对象中,然后由spring框架帮我们把每一个T泛型类型的对象加载到List集合当中去
示例


但是我们这样自己写封策略的话十分的麻烦,spring框架为我们解决了这样的烦恼
那就是使用new BeanPropertyRowMapper<>()
new BeanPropertyRowMapper<>()
这个类的泛型指定要封装为的类型,括号中的参数填写指定类型的字节码
例如

这样就节约了我们很多的代码,更加的方便灵活
我们还可以使用这个返回值为List的方法查询一个

这个时候得到的查询结果就是一个,我们只需要使用List.get(0)来获取就能的到那一个的查询结果
jdbcTemplate对象.queryForObject()

一般用于查询返回一行一列的sql语句(使用聚合函数,但不加group by)

这里我们使用的是这个方法

这里面的requiredType是什么呢?
参数Class<T> requiredType
该参数用于指定你需要的返回值类型,填写一个字节码类型的参数,我们需要注意填写我们想要的返回值类型的时候,必须时返回值可以转为我们想要的那个类型,否则会报错。
jdbcTemplate在Dao中的使用
配置dao包中的接口

配置实现类


然后配置ioc容器中的对象

JdbcDaoSupport的使用以及Dao的两种编写方式
我们在正常开发中,操作实体类的类肯定不止一个,那么如果我们每个类都要写jdbcTemplate这种重复的成员变量,肯定是很繁琐的,所以我们需要一个类来抽取dao中的重复代码
这时候我们就需编写这个类,我们取名为JdbcDaoSupport,这时候这些操作实体类的类中重复的属性都可以从JdbcDaoSupport中继承得到
,但是这种我们都能想到的事情,spring当然也想到了,并且为我们准备了解决方案
这时候我们只需要写继承JdbDaoSupport就可以了,这个类不需要我们自己编写,spring已经帮我们编写好了,
,
那我们写继承的方式和不写继承的两种dao的实现方式有什么区别呢?
写了继承JdbcDaoSupport的方式在使用注解进行配置的时,如果想要使用注解进行注入JdbcTemplate属性是不可以的,因为该属性由父类提供,也就是spring写的JdbcDaoSupport提供,众所周知我们没办法把我们的注解加到jar包中的类上

所以这时候我们只能通过xml配置的方式注入JdbcTemplate。
因为我们继承该类之后想使用的就是jdbcTemplate对象,查看源码发现我们只需要给setDateSource注入就能创建好jdbcTemplate对象了

而不写继承的方式的话我们呢就可以直接使用注解进行注入。

浙公网安备 33010602011771号