2020-10-08

DBUtils 原理

1.简化了增删改的代码

原始方法:

1.获取连接池 2.获取连接 3.创建SQL模板 4.创建预处理对象 5.通过预处理对象设置模板中每一个参数 6.调用预处理对象executeUpdate()更新结果 7.关闭预处理对象 8.关闭连接

通过分析可以发现:

1.增删改数据库都是用以上方法完成,

2.原始方法要创建每一种操作的方法,

3.变化的只有 SQL模板和设置的参数,

那么我们就可以创建一个工具类,去除掉重复的操作

工具类的实现:

首先需要用户传一个连接池进来,使用构造的方法获取

将连接池定义个成员共其他方法使用

然后定义一个增删改的方法,

参数为 1.SQL模板 2.参数数组(为可变参数并且为Objcet类型方便传入任何类型)

可以返回一个执行成功后的执行条数

将重复的操作放到此方法中,

通过连接池成员获取连接

使用 传入的 SQL模板 创建预处理对象

然后循环可变参数数组

用预处理对象的setObjcet()方法循环设置每一个参数.

调用预处理对象executeUpdate()更新结果.关闭预处理对象,关闭连接

此方法设置好后,就可以使用一个方法实现 增删改,且简化了很多操作.

2.简化了查询的代码

因为查询与增删改略有不同,需要用到ResultSet结果集 来对数据进行读取存储,所以需要单独建立一个方法实现

原始方法:

1.获取连接池 2.获取连接 3.创建SQL模板 4.创建预处理对象 5.通过预处理对象设置模板中每一个参数 6.调用预处理对象executeQuery()方法得到ResultSet结果集 7.再将ResultSet将结果转换成对象返回 8.关闭ResultSet9.关闭预处理对象 10.关闭连接

通过分析可以发现:

1.变化有 SQL模板设置的参数和 ResultSet的转换,

1.在工具类中定义一个泛型接口类 用来实现ResultSet结果集的转换

接口中定义一个方法 参数为 ResultSet 类型,返回一个对象任意泛型对象

2.实现一个泛型的查询方法,参数为(1.SQL模板 2.接口类 3.参数数组(为可变参数并且为Objcet类型方便传入任何类型)

将重复的操作放到此方法中,

通过连接池成员获取连接

使用 传入的 SQL模板 创建预处理对象

然后循环可变参数数组

用预处理对象的setObjcet()方法循环设置每一个参数.

调用预处理对象executeQuery()方法得到ResultSet结果集

调用传入的接口类方法将结果集作为参数传入

返回一个对象

最终这个让调用方法的来实现接口类中的方法,

因为ResultSet转换对象的的过程每次都不同,

只能定义一个接口让调用者实现

以上两个方法还能精简,如预处理循环设置参数,这个可以抽取出来定义一个方法

参数传入一个 预处理对象,还有一个可变参数

内容定义循环

其实最终DButil 还提供了一个类将 ResultSet转换对象的过程 封装成了方法,直接转换成对象返回

底层实现是通过反射的原理,传入一个Class 将类中的成员反射出来赋值转换.

这样使用起来就更加方便,直接传入一个类

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值