美文网首页
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