自制DbHelper实现自动化数据库交互
来源:互联网 发布:淘宝刷好评兼职平台 编辑:程序博客网 时间:2024/06/11 20:19
之前一直对apache的DbUtils很好奇,也很佩服其中的设计上的智慧。于是就自己模拟实现了一个更加简便的小框架。我们只需要在配置文件中写上数据库层面的连接信息,就可以随心所欲的实现自己的需求了。
设计思路
依赖
apache-commons-logging.jar
apache-commons-beanutils.jar
mysql-connector.jar
技术细节
其中最主要的是是使用了反射技术和泛型操作,实现了对bean对象的属性的解析以及实例化相关的bean对象。
public class Converter<T> { public static <T> T convert2Bean(ResultSet rs, Class<T> 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 <T> List<T> convert2BeanList(ResultSet rs, Class<T> bean) throws Exception { Field[] fields = bean.getDeclaredFields(); List<T> lists = new ArrayList<T>(); 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<DateTest> dates = runner.query(conn, sql, new BeanListHandler<DateTest>(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<DateTest> dates = runner.query(conn, sql, new BeanListHandler<DateTest>(DateTest.class),params); for (DateTest date : dates) { System.out.println(date.toString()); } System.out.println("------------------------------------------------------"); }
Quick Start
源码以及打包好的jar文件,已上传至我的GitHub上面了。希望有兴趣的朋友能一起研究一下,让我们一起为开源奉献自己的光和热吧。
点击获取源码及jar
1 0
- 自制DbHelper实现自动化数据库交互
- ASP.NET数据库驱动类的实现:DBHelper
- 数据库通用类DBHelper
- dbhelper类,连接数据库
- 【自制编程语言】1. 实现一个简单的交互界面
- 四个DBHelper实现
- 四个DBHelper实现
- 自制日历手机数据库(实现SQLiteOpenHelper)
- DBHelper 数据库操作封装类
- DbHelper-SQL数据库访问助手
- DBHelper连接oracle数据库类
- C#数据库编程 之 DbHelper数据操作类【DBHelper.CS】
- C#数据库编程 之 DbHelper数据操作类【DBHelper.CS】
- DBHelper
- DBHelper
- DBHelper
- dbhelper
- DBHelper
- Response.Redirect与Server.Transfer区别
- VS2010 基于windows media player做音乐播放器,问题解析(已验证)
- uIP宏定义的详细配置
- Button按下效果之变换背景图片
- jboss规则引擎KIE Drools 6.3.0 Final 教程(3)
- 自制DbHelper实现自动化数据库交互
- UPX elf to mem
- 字符串的全排列和组合问题整理
- 忽略performSelector警告
- 数组指针和指针数组的区别
- Android开发学习笔记:Intent的简介以及属性的详解
- 处理大数据对象:处理CLOB数据
- Google Java编程风格指南 ()中文版)
- Debug---Eclipse断点调试基础