【JavaWeb】72:JdbcTemplate入门

2020-07-30 09:57:15 浏览数 (1)

今天是刘小爱自学Java的第72天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:

我翻了下以前自己记的笔记,从第58天开始学习MySQL数据库,到今天已经14天了。

对于我来说,学数据库最主要的目的就是学习如何去操作数据库,也就是增删改查。

而其中牵扯到的技术就是Jdbc,翻来覆去学了好几天,无外乎就是对Jdbc的学习与优化。

现在做个回顾小结:

一、Jdbc回顾

Jdbc核心六步骤,但是每次都这样写的话太繁琐了,所以将其中第1、2、6步封装进JdbcUtil工具类。

后面通过一个sql注入的例子学习了预编译。

再尝试着自定义了一个连接池,从而更好地去学习开源连接池c3p0和德鲁伊。

同时也是对于Java中非常重要的一个知识点动态代理的再次巩固。

说白了学这些其实都在做一件事情,就是在不停地优化JdbcUtil工具类:

①Jdbc核心六步骤

这是Jdbc最基础的六个步骤。

其中第1步注册驱动,在MySQL3.0开始实现自动注册,但最好自己还是知道怎么写的好。

其中第6步释放资源,因为每次连接完需要释放资源,故将其封装进工具类,减少代码冗余。

②连接池的学习

两大开源连接池的学习,本质上其实就是对核心六步骤中的第二步(获取连接)的进一步优化。

我选择的是德鲁伊连接池,同样,将其封装进工具类JdbcUtil中。

③预编译的学习

sql注入的问题,以及预编译的引入,说白了也就是对核心六步骤中的第3、4步的优化。

预编译比常规方法更加地安全,也更有效率。

而今天要学一个小框架JdbcTemplate,准确地说,它是spring这个大框架中的一个模块。

Template,模板的意思,也就是Jdbc的一个模板。

它的出现也就是对核心六步骤中第3、4、5步的再一次优化,同时进一步简化代码,使用起来会更加地方便。

二、JdbcTemplate之增删改

翻来覆去,其实无外乎就是增删改查。

其中牵扯到,对数据表本身的增删改查,和表里的数据增删改查。

①创建JdbcTemplate对象

直接创建JdbcTemplate对象,会发现构造函数参数需要传入数据源。

在自己编写的工具类Jdbcutil中封装一个获取一个数据源的方法,然后直接获取即可。

②对数据表本身的操作:execut()

execute,执行的意思,对于数据表本身的操作(增删改查),都是用这个方法。

我们创建一个数据表student,有3列:id,name,age。

当然在Java中很少直接操作数据表本身,一般都是用于对表里数据的操作。

③对表中数据的增删改:update()

update,修改的意思,对于数据表里的数据修改(增删改在这儿都属于修改),都是用这个方法。

我们给Student表新增一条数据。

其中update方法有两个参数:一个是sql语句,一个是可变参数(也就是sql语句中预编译中的“?”)。

该方法让预编译更加地简洁了,不用我们自己设定每个“?”的具体值是多少。

如果使用常规方法的话,我们需要这样编写:

利用工具类JdbcUtil获取连接,使用预编译,然后需要逐个设定预编译中“?”的值。

所以通过对比可以发现JdbcTemplate模板使代码更加地简洁了,其底层其实就是做了这样的封装。

三、JdbcTemplate之查询

对于表里数据的增删改查中,无疑查询是最重要的存在。

这也很好理解,我们经常都需要登入各种APP各种网站,其本质就是对于数据的查询,而修改注销创建账号的频率无疑要少很多。

并且查询要复杂的多,我们画图分析:

查询的结果共有三种情况,在Java中每种情况有其对应的API:

①单行单列:queryForObject()

查询出来的结果是一个数据,所以Java中用的返回值是Objcet。

现在编写对应的代码:

queryForObject()方法有三个参数:

sql语句,查询到的数据类型对应的class对象,以及预编译中的参数。

其中第一个例子查询的是数量,所以只有前两个参数。

②单行多列:queryForMap()

查询出来的结果是一行数据,所以Java中用的返回值是Map集合。

Map集合是由key和vlaue组成,其中这行的列名就相当于key值,这一行的数据就相当于value。

代码编写如下:

queryForMap中有两个参数:

sql语句,以及预编译中的参数。

③多行多列:queryFroList()

查询出来的结果是多行数据,所以Java中用的返回值是list集合,就相当于在list集合中装了很多个Map。

其中多行单列也就是属于多行多列。

代码编写如下:

返回值就是很多个map,自己将list遍历打印map即可。

以上便是对于数据表的查询操作。

然后发现使用JdbcTemplate,大大地简化了核心6步骤中的第5步(处理结果)。

以前需要处理结果集也就是ResultSet,写一个迭代器再获取其中具体的值,非常地繁琐。

现在JdbcTemplate将其封装了,使用起来特别地方便。

当然查询操作还有其它方法,但个人精力实在是有限,暂时只能学到这儿,明天继续学习。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

0 人点赞