博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自制DbHelper实现自动化数据库交互
阅读量:6280 次
发布时间:2019-06-22

本文共 2610 字,大约阅读时间需要 8 分钟。

之前一直对apache的DbUtils很好奇,也很佩服其中的设计上的智慧。于是就自己模拟实现了一个更加简便的小框架。我们只需要在配置文件中写上数据库层面的连接信息,就可以随心所欲的实现自己的需求了。

设计思路

框架设计初稿

依赖

  • apache-commons-logging.jar
  • apache-commons-beanutils.jar
  • mysql-connector.jar

技术细节

其中最主要的是是使用了反射技术和泛型操作,实现了对bean对象的属性的解析以及实例化相关的bean对象。

public class Converter
{ public static
T convert2Bean(ResultSet rs, Class
bean) throws Exception { Field[] fields = bean.getDeclaredFields(); T obj = bean.newInstance(); for (Field field : fields) { String pname = field.getName(); BeanUtils.setProperty(obj, pname, rs.getObject(pname)); } return obj != null ? obj : null; } public static
List
convert2BeanList(ResultSet rs, Class
bean) throws Exception { Field[] fields = bean.getDeclaredFields(); List
lists = new ArrayList
(); while (rs.next()) { T obj = bean.newInstance(); for (Field field : fields) { String pname = field.getName(); BeanUtils.setProperty(obj, pname, rs.getObject(pname)); } lists.add(obj); } return lists != null ? lists : null; }}

确保数据库中字段与Bean的属性保持一致,否则convert过程会失效 :-)

测试代码

这里没有将完整的代码贴出来,但是看到

List<DateTest> dates = runner.query(conn, sql, new BeanListHandler<DateTest>(DateTest.class));

List<DateTest> dates = runner.query(conn, sql, new BeanListHandler<DateTest>(DateTest.class),params);

足以说明问题了吧。

public static void main(String[] args) throws Exception {        String sql = "select * from datetest";        QueryRunner runner = new QueryRunner();        DbHelper.register();        Connection conn = DbHelper.getConn();        List
dates = runner.query(conn, sql, new BeanListHandler
(DateTest.class)); for (DateTest date : dates) { System.out.println(date.toString()); } System.out.println("------------------------------------------------------"); }
public static void main(String[] args) throws Exception {        String sql = "select * from dataset where name=? and age=?";        Object[] params = {
'mark',20}; QueryRunner runner = new QueryRunner(); DbHelper.register(); Connection conn = DbHelper.getConn(); List
dates = runner.query(conn, sql, new BeanListHandler
(DateTest.class),params); for (DateTest date : dates) { System.out.println(date.toString()); } System.out.println("------------------------------------------------------"); }

Quick Start

源码以及打包好的jar文件,已上传至我的GitHub上面了。希望有兴趣的朋友能一起研究一下,让我们一起为开源奉献自己的光和热吧。

你可能感兴趣的文章
Zabbix邮件报警设置方法
查看>>
20145328 《信息安全系统设计基础》第6周学习总结
查看>>
C语言随笔_类型声明
查看>>
AIX或LINUX,通过华为存储V3上添加对应LUN组,分配存储资源
查看>>
监控mysql主从的脚本
查看>>
用phpmyadimn来连接管理多个数据库
查看>>
linux java 定时任务
查看>>
Linux守护进程(init.d和xinetd)
查看>>
bootstrap-进度条
查看>>
并发学习心得
查看>>
find、xargs命令使用及方法详解
查看>>
系统提示硬盘不够用的处理方法
查看>>
curl工具post用法
查看>>
我的友情链接
查看>>
lvs+keepalived实现web负载及高可用
查看>>
C# 分享几个ip的方法吧,包括正则验证ip
查看>>
sudo apt-get 与 yum安装有啥区别
查看>>
在 jQuery Repeater 进行验证更新等操作时提示消息
查看>>
2018-2019-2 20162329 《网络对抗技术》Exp7: 网络欺诈防范
查看>>
iPhone NSBundle的使用
查看>>