自定义JDBC框架(仿DBUtils)
2012-06-01 22:09
471 查看
1. 编写DBAssist类 该类简单化了SQL查询(package com.itheima.dbassist;
2. 编写ResultHandler接口 该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。
ResultSetHandler 接口提供了一个单独的方法:<T> T handle(ResultSet rs) 利用泛型做成通用方法
3. 编写ResultHandler接口的实现类
以下为简单的实现类(仿BeanUtils中BeanHandler)
4.将编写好的类打成jar包
export --> Jar File -->去掉.classpath及.project和其他相关工具类文件
保留的文件: 只保留1-3步骤中编写的类即可
import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.sql.DataSource; import com.itheima.util.JdbcC3p0Util; public class DBAssist { private DataSource ds ; public DBAssist(DataSource ds){ this.ds= ds; } /** * 执行add delete update语句 * @param sql * @param params 参数 */ public void update(String sql,Object[] params){ Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try{ conn = JdbcC3p0Util.getConnection(); stmt = conn.prepareStatement(sql); //设置参数 ParameterMetaData md = stmt.getParameterMetaData(); int num = md.getParameterCount();//参数的个数 for(int i=0;i<num;i++){ stmt.setObject(i+1, params[i]); } stmt.executeUpdate(); }catch(Exception e){ throw new RuntimeException(e); }finally{ JdbcC3p0Util.release(rs, stmt, conn); } } public Object query(String sql,Object[] params,ResultHandler handler){ Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try{ conn = JdbcC3p0Util.getConnection(); stmt = conn.prepareStatement(sql); //设置参数 ParameterMetaData md = stmt.getParameterMetaData(); int num = md.getParameterCount();//参数的个数 for(int i=0;i<num;i++){ stmt.setObject(i+1, params[i]); } rs = stmt.executeQuery(); //将结果集封装到对象中 Object o = handler.handle(rs); return o; }catch(Exception e){ throw new RuntimeException(e); }finally{ JdbcC3p0Util.release(rs, stmt, conn); } } }定义了增删改查方法),它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
2. 编写ResultHandler接口 该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。
ResultSetHandler 接口提供了一个单独的方法:<T> T handle(ResultSet rs) 利用泛型做成通用方法
package com.itheima.dbassist; import java.sql.ResultSet; public interface ResultHandler { // Object handle(ResultSet rs); <T> T handle(ResultSet rs); }
3. 编写ResultHandler接口的实现类
以下为简单的实现类(仿BeanUtils中BeanHandler)
package com.itheima.dbassist.handler; import java.lang.reflect.Field; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import com.itheima.dbassist.ResultHandler; /** * 查询一条记录 * * @author a * */ public class BeanHandler<T> implements ResultHandler { private Class<T> clazz; public BeanHandler(Class clazz){ this.clazz = clazz; } public T handle(ResultSet rs) { try{ if(rs.next()){ T o = clazz.newInstance(); ResultSetMetaData md = rs.getMetaData(); int cloumnNum = md.getColumnCount(); for(int i=0;i<cloumnNum;i++){ String columnName = md.getColumnName(i+1); Object columnValue = rs.getObject(columnName); Field field = clazz.getDeclaredField(columnName); field.setAccessible(true); field.set(o, columnValue); } return o; }else return null; }catch(Exception e){ throw new RuntimeException(e); } } }
4.将编写好的类打成jar包
export --> Jar File -->去掉.classpath及.project和其他相关工具类文件
保留的文件: 只保留1-3步骤中编写的类即可
相关文章推荐
- jdbc框架 commons-dbutils的使用
- JavaWeb之JDBC&自定义框架/DBUtil(十五)
- JDBC框架——DBUtils
- DBUtils框架(自定义)
- jdbc框架 commons-dbutils+google guice+servlet 实现一个例子
- JDBC【数据库连接池、DbUtils框架、分页】
- jdbc之Apache—DBUtils框架
- JDBC高级开发(3)--Apache—DBUtils框架
- Java_常瑞鹏 JDBC框架 和 Apache—DBUtils框架
- JDBC 学习笔记(四)—— 自定义JDBC框架+Apache—DBUtils框架+事务管理+操作多表
- JDBC【数据库连接池、DbUtils框架、分页】
- JDBC框架 和 Apache—DBUtils框架
- JDBC【数据库连接池、DbUtils框架、分页】
- JDBC框架 和 Apache—DBUtils框架
- Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用
- DBUtils框架简化JDBC开发
- JDBC第四篇--【数据库连接池、DbUtils框架、分页】
- (二)JDBC连接池&DBUtils—自定义连接池增强方法
- 自定义框架之JDBC的简要封装
- 模仿dbutils的jdbc框架