同過使用C3P0建立的對mysql數據庫CRUD操作的工具類
下面是用來處理接口
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
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!