Spring入门——JdbcTemplate

在这里插入图片描述在这里插入图片描述在这里插入图片描述创建JdbcTemplate对象
在这里插入图片描述不过没有配置数据源 所以操作不了(可以用set方法设置数据源 也可以直接用构造方法)
在这里插入图片描述这样配置就写死了 这些信息 以及new产生依赖
在这里插入图片描述可以用xml配置
1.JdbcTemplate对象(注入dataSource)
2.数据源dataSource

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

在这里插入图片描述配置完 实现类就可以用获得IOC容器 再得到实例化
在这里插入图片描述获取完对象就可以开始其他的增删改查操作
在这里插入图片描述其中查询所有的方法 query的参数有三个
1.sql语句
2.RowMapper< T >对象
3.sql所需的参数
返回值是一个List
我们根据这几个条件 , 可以在提示中排除找到这两条语句
他们的区别就是一个任意版本都可以用,一个要在jdk1.5以上
在这里插入图片描述然后在需要RomMapper对象时我们可以创建一个得到RomMapper对象的类来返回一个对象给他
在这里插入图片描述这样就可以得到查询所有的值
在这里插入图片描述但在实际开发中 我们不用自己去创建RomMapper方法来获得这个对象,而是用下面这个Spring提供了的方法BeanPropertyRomMapper< T >(T.class)
(T是泛型)
在这里插入图片描述同理这个查询一个的也是用这个方法 只是要把条件改成id=?
在这里插入图片描述返回一列的方法queryForObject 中间那个参数是 转换返回值的类型 如果想得到int型就用Integer.class,long型就用Long.class
在这里插入图片描述


在我们测试完这些增删改查方法后(在测试类里)后,实际上我们开发中这些方法都是封装在Dao层的而不是测试类这里,所以我们要创建Dao层
Dao接口
在这里插入图片描述Dao实现层
在这里插入图片描述其中这些查询方法和之前测的都差不多
不过在查询id和查询name的时候有不同
id:用正则表达式 如果有返回,没有返回null
name:如果为空返回null;如果size大于1,因为name唯一所以报异常;否则(即只有一个时)返回name;

这时候配完了Dao层 里面只有一个JdbcTemplate要注入,我们再往xml里面添加
在这里插入图片描述


到这一步没我们就可以改回测试类了
在这里插入图片描述就可以运行了


现在在Dao层其实还有一个问题:Dao层如果不知有一个Dao的实现类(操作用户的Dao,操作商品的Dao等等)
而他们中每次要进行数据库操作 都要注入
在这里插入图片描述这里就造成了重复代码
那么我们要怎么让每个类可以不在一直重复写呢
每个类都有这个对象———>继承
我们只需要写一个公共的Jdbc父类——用于获得JdbcTemplate(通过注入),然后定义一个返回jdbcTemplate方法
在这里插入图片描述
然后Dao实现类的方法里就不用成员变量了 直接调用父类的getJdbcTemplate方法获得JdbcTemplate,这样每个Dao都不用重复注入JdbcTemplate
在这里插入图片描述只需要继承这个父类
在这里插入图片描述然后这个父类只注入了JdbcTemplate,(默认是在其他地方建立了JdbcTemplate放在了SpringIOC容器里,然后这时候拿出来注入)实际上我们甚至可以把DataSource也注入进来(即可以在没有JdbcTemplate的情况下,直接用注入进来的DataSource立刻创建JdbcTemplate)在这里插入图片描述根据上面的在Jdbc类里面创建了注入DataSource来创建JdbcTemplate方法(原本是在JdbcTemplate里面做的),所以原来在xml配置的JdbcTemplate以及被代替了,已经可以不用了,我们只需要把DataSource直接注入到Dao层就可以了
在这里插入图片描述最后实际上我们写的这个Jdbc父类,Spring已经帮我们写好了 就叫
在这里插入图片描述功能就是不用我们在xml配置JdbcTemplate,直接把DataSource和JdbcTemplate注入到Dao层即可,而且每个Dao的实现类只需要继承这个父类就不用重复注入JdbcTemplate


但这个方式 和我们之前虽然重复注入有什么区别呢
区别在于之前手动注入里面 成员变量是JdbcTemplate 所以可以用注解的方式@Autowired
在这里插入图片描述而父类这种已经没有成员变量了 所以不能用注解(因为是Spring编写的无法修改)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值