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