美文网首页
5 JdbcTemplate模板

5 JdbcTemplate模板

作者: ca8519be679b | 来源:发表于2020-06-18 13:00 被阅读0次
1

我们回看一张老图,我们已经看了ioc,iop,今天我们关心左上角一块,数据库相关的内容,java有对数据库的处理模块JDBC(然而我还没用过),我们今天研究的JdbcTemplate就是对JDBC的spring封装,方便实现对数据库的增删改查操作

准备工作

1 安装jar包

2

其中druid连接池我们已经安装过了,不过如果没有安装还是需要安装的,还需要其资源的mysql-connector-java包,

3

还有spring lib下的几个包,jdbc,orm,tx,其中jdbc肯定是必要的,Orm是使用其他映射框架使用的,tx是事务相关的

4

往常一样导入依赖

2  配置druid连接池

这步之前做过,需要创建xml文件,把如下图所示内容粘贴过去,,(资源自带txt文件),这里省略了windows的mysql安装,其实很简单的,下载安装包设置就完了,这里为了一致我设置了视频一样的密码

5 6

由于xml配置的是user_db数据库,我们创建一个名称一样的

3 配置JdbcTemplate对象,注入DataSource

我们之前在xml创建druid连接池,就是创建一个可连接的数据源,现在创建JdbcTemplate对象

7

当然还是老办法创建bean,这里class路径按照上图

8

我们查看这个类,可以看到其有参无参构造,但是其实默认还是设置的set方法

9

我们只需要设置property标签,使用ref指向我们的druid连接池

4 创建Service服务类,创建Dao数据库操作类,在Service注入Dao属性,在Dao注入JdbcTemplate属性

10

我们准备使用注解,然后再xml里配置context名称空间和组件扫描

11

创建2个包service和dao,创建BookService类,BookDao接口和其实现类

12

我们注解创建对象,给Service加上注解

13

给Dao实现类加上注解创建对象

14

我们给Service注入Dao对象,使用注解@AutoWired自动装配

15

Dao里注入JdbcTemplate操作

至此完成准备工作

JDBC的数据库操作(增删改查)

增加操作

16

我们在mysql里创建一张表,操作语句如上,我们创建3个字段,book的id,name,status

17

我们创建类Book,设置3个字段和setter,getter如上

18

我们给Service增加方法addBook,传入Book对象,使用bookDao对象添加

19

我们给接口增加抽象方法add,

20

在实现类里我们重写方法,这里我们使用jdbc来操作,具体使用对象的update方法来实现操作(增删改查都是靠他),其中第一个参数为sql语句,第二个参数为可变参数(我们也可以传入数组)

21

我们使用sql语句如上,?是被替换的部分,我们通过book获得属性传给可变参数

22

我们编写测试类,这里本来book应该是表单给我的,这里我们没有,只能new个出来,

23

运行结果如上,我们就实现了添加到数据库,这里需要注意的是url即数据库地址我修改了,出现编码问题我设置了https://blog.csdn.net/txwtech/article/details/80787886如上,还有是用户账户设置的问题,参照https://www.jianshu.com/p/e3105a4657b8重置了密码就好了,中间还重新建了库和表,因为忘了设置user_db为utf8

24

使用完可以看到添加效果

修改和删除

25

我们还是一样,给Service添加功能

26

接口添加抽象方法

27

实现类里重写,sql语句如上,注意格式

28 29

测试类和修改结果如上

30

删除效果及测试类代码

查询操作

查询返回某个值

我们还有印象select count(*) from 表名  来活得记录数

31

我们在service里增加功能,同样接口和实现类添加功能,不重复贴图了

32

在实现类里,sql语句还是之前的,但是我们要调用jdbctemplate对象的queryForObject方法,第一个参数当然是sql字符串,第二个是返回类型class字节码

33

实现类如上,我们因为要返回int,所以使用泛型Integer的字节码

34

我们调用方法,添加2本书,然后输出统计

35

结果和如上一样

查询返回对象

此场景常常是,比如我们网页选择了某本书,弹出页面显示其具体信息

36

比如我们根据id查找Book类,那就service里定义功能,同时接口和实现类完成

37

我们还是使用queryForObject方法,不过这次使用重载,3个参数,参数1是带?的sql语句,参数3是替代?的字符串,这里是id,参数2 RowMapper<T>是指定泛型的接口,我们使用spring给我们封装好的实现类即可

38

实现类方法如上,

39

我们删掉之前的book,然后添加2个查询,结果如上

查询返回集合

40

service里定义方法findall返回Book类型集合

41

在实现类里重写,这里使用的方法是query和之前不一样,2个参数,第一个是sql,第二个还是RowMapper接口,我们就使用实现类传入

42

因为是集合我们可以遍历返回元素,测试效果如上

批量操作

批量添加

43

批量添加使用的是JdbcTemplate的batchUpdate方法,其中参数1还是添加语句和之前一样,但是args参数2是包含Object数组的LIST对象(像二维列表,又不是),实现类如上

44 45

我们在service类和接口里定义对应方法

46

测试类里我们使用创建List对象给书的属性传入,然后args集合传给方法,

47

效果如上

批量修改

方法也是JdbcTemplate的batchUpdate方法

48

比如我们对指定bookid进行修改,

49

测试类里就对我们刚才的3个book的书名和状态修改

50

效果如上

批量删除

同样是使用batchUpdate

51 52 53

测试类即结果如上,就不多说啦

相关文章

网友评论

      本文标题:5 JdbcTemplate模板

      本文链接:https://www.haomeiwen.com/subject/hojjxktx.html