JdbcTemplate使用介绍

jdbctemplate使用步骤

原始步骤

  1. 创建数据源
  2. 创建JdbcTemplate对象
  3. 将数据源传入JdbcTemplate对象
  4. 使用JdbcTemplate对象执行sql语句

在这里插入图片描述
但是同样我们呢可以看到,这样的写法依赖性很高
在这里插入图片描述
我们可以使用spirng的ioc容器来降低这样的高依赖性

使用ioc容器配置的方式的步骤

  1. 创建jdbctemplate的bean
  2. 给jdbctemplate的bean注入datasource
  3. 创建datasource的bean
  4. 给datasource的bean注入所需数据(用户名、密码、url、driver)
  5. 创建核心容器对象
  6. 使用核心容器对象获取jdbctemplate对象
  7. 使用获取到的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集合当中去

示例
img.cn/2021012010464330.png)

在这里插入图片描述
但是我们这样自己写封策略的话十分的麻烦,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对象了
在这里插入图片描述

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

posted @ 2021-01-20 12:07  谢海川  阅读(374)  评论(0)    收藏  举报