同过使用C3P0建立的对mysql数据库CRUD操作的工具类
jopen
11年前
下面是用来处理接口
package util; import java.sql.ResultSet; public interface ResultSetHandler { // 交给调用者处理 public Object handler(ResultSet rs) throws Exception; }
package util; import java.lang.reflect.Field; import java.sql.ResultSet; import java.sql.ResultSetMetaData; //这是获取单个数据的处理类 public class BeanHandler implements ResultSetHandler { // 声明接收要处理的bean的class对象 private Class<?> cls; // 构造器为接收的class赋值 public BeanHandler(Class<?> cls) { super(); this.cls = cls; } // 处理接收到的对象 @Override public Object handler(ResultSet rs) throws Exception { // 判断结果集中是否还有数据 if (rs.next()) { // 同过反射处理获取要处理class的对象 Object bean = cls.newInstance(); // 获取ResultSet的元数据的ResultSetMetaData对象 ResultSetMetaData metaData = rs.getMetaData(); // 循环遍历,为bean内的属性赋值 for (int i = 1; i <= metaData.getColumnCount(); i++) { // 通过元数据获取要赋值的数据字段 String columnName = metaData.getColumnName(i); // 获取字段对应额数据值 Object columnValue = rs.getObject(columnName); // 通过反射获取bean的字段名称对应的Field对象 // getDeclaredField("");获取指定的字段已经声明过的Field对象 Field field = bean.getClass().getDeclaredField(columnName); // 设置暴力反射开启 field.setAccessible(true); // 为bean中的属性赋值 field.set(bean, columnValue); } // 返回设置属性后的bean return bean; } else { return null; } } }
下面是处理查询多条数据时用到的处理类
package util; import java.lang.reflect.Field; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.ArrayList; import java.util.List; //这是获取数据库中所有的数据的处理类 public class BeanListHandler implements ResultSetHandler { // 声明接收要处理的bean的class对象 private Class<?> cls; // 构造器为接收的class赋值 public BeanListHandler(Class<?> cls) { super(); this.cls = cls; } // 处理接收到的对象 @Override public Object handler(ResultSet rs) throws Exception { // 声明返回的数据集合 List<Object> list = new ArrayList<Object>(); // 判断结果集中是否还有数据 while (rs.next()) { // 同过反射处理获取要处理class的对象 Object bean = cls.newInstance(); // 获取ResultSet的元数据的ResultSetMetaData对象 ResultSetMetaData metaData = rs.getMetaData(); // 循环遍历,为bean内的属性赋值 for (int i = 1; i <= metaData.getColumnCount(); i++) { // 通过元数据获取要赋值的数据字段 String columnName = metaData.getColumnName(i); // 获取字段对应额数据值 Object columnValue = rs.getObject(columnName); // 通过反射获取bean的字段名称对应的Field对象 // getDeclaredField("");获取指定的字段已经声明过的Field对象 Field field = bean.getClass().getDeclaredField(columnName); // 设置暴力反射开启 field.setAccessible(true); // 为bean中的属性赋值 field.set(bean, columnValue); } // 将设置好的目标对象添加到list集合 list.add(bean); } return list; } }
下面是通过C3P0连接数据时用到的连接配置文件
c3p0的链接还需要用到
c3p0-0.9.5-pre6.jar
mchange-commons-java-0.2.6.3.jar
两个包
来自:http://blog.csdn.net/dong_martin/article/details/17886147