对使用泛型和元数据,做一个通用的JDBC增、删、查、改操作,急需! 对使用泛型和元数据,做一个通用的JDBC增、删、查、改操作,急需!要源码,有分析更好! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public abstract class SupperDAOImpl<T> { private static Connection conn = DBUtil.getConnection(); public void delete(long id) { StringBuffer deleteSql = new StringBuffer(); deleteSql.append("delete from ").append(getTableName()).append(" where id=").append(id); try { PreparedStatement preparedStatement = conn.prepareStatement(deleteSql.toString()); preparedStatement.execute(); preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } public abstract String getTableName(); public abstract Class getParamClass(); public List<T> getList() { String querySql = "select * from " + getTableName(); List list = new ArrayList(); try { PreparedStatement preparedStatement = conn.prepareStatement(querySql); ResultSet resultSet = preparedStatement.executeQuery(); ResultSetMetaData metaData = resultSet.getMetaData(); Object object = null; Field[] fields = getParamClass().getDeclaredFields(); while (resultSet.next()) { object = getParamClass().newInstance(); for (int i = 0; i < fields.length; i++) { fields[i].setAccessible(true); fields[i].set(object, resultSet.getObject(fields[i].getName())); } list.add(object); } /* int columnCount = metaData.getColumnCount(); //获得查询的列数个数 while (resultSet.next()) { object = getParamClass().newInstance();//根据String型的类名,得到一个Object for (int i = 1; i <= columnCount; i++) { //循环设置该类的set方法的相关属性 String methodName = StringUtil.setMethodSetName(metaData.getColumnName(i)); Method method = getParamClass().getMethod(methodName, Object.class); method.invoke(object, resultSet.getObject(metaData.getColumnName(i))); } list.add(object); //增加到List中 }*/ resultSet.close(); } catch (SQLException ex) { ex.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); }/*catch (InvocationTargetException e) { e.printStackTrace(); }catch (NoSuchMethodException e) { e.printStackTrace(); } */ return list; } public void update(Object bean) { Map<String, Object> fieldMap = getFieldMap(bean); String id = getPrimarykeyName(); StringBuffer updateSql = new StringBuffer(); updateSql.append("update ").append(getTableName()).append(" set "); Set<Entry<String, Object>> set = fieldMap.entrySet(); Iterator iterator = set.iterator(); while (iterator.hasNext()) { Entry<String, Object> entry = (Entry<String, Object>) iterator.next(); if (!iterator.hasNext()) { updateSql.append(entry.getKey()).append("=? ").append("where ").append(id).append("=?"); } else if (!entry.getKey().equalsIgnoreCase(id)) { updateSql.append(entry.getKey()).append("=?,"); } else if (entry.getKey().equalsIgnoreCase(id)) { id = entry.getKey(); } } iterator = set.iterator(); int j = 1; try { PreparedStatement preparedStatement = conn.prepareStatement(updateSql.toString()); while (iterator.hasNext()) { Entry<String, Object> entry = (Entry<String, Object>) iterator.next(); if (!entry.getKey().equalsIgnoreCase(id)) { preparedStatement.setObject(j++, entry.getValue()); } } preparedStatement.setObject(j, fieldMap.get(id)); preparedStatement.execute(); preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") private Map<String, Object> getFieldMap(Object bean) { Class c = bean.getClass(); Field[] fields = c.getDeclaredFields(); Map<String, Object> fieldMap = new TreeMap<String, Object>(); for (int i = 0; i < fields.length; i++) { String fieldName = fields[i].getName(); try { fieldMap.put(fieldName, c.getMethod(StringUtil.getMethodGetName(fieldName)).invoke(bean)); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } return fieldMap; } private String getPrimarykeyName() { String primarykeyNam = null; try { PreparedStatement preparedStatement = conn .prepareStatement("select * from user_cons_columns where constraint_name=(select constraint_name from user_constraints where table_name = 'STUDENT' and constraint_type ='P')"); ResultSet resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { primarykeyNam = resultSet.getString(4); } } catch (SQLException e) { e.printStackTrace(); } return primarykeyNam; }} 请问怎样在spring官网上下载spring 一条sql语句不知道在里怎么写hibernate? WEB页面实时响应的问题!!急!! 请问如何把LIST的数据传到IFRAME里 哪位大哥能给小弟解释一下“委托”“委派”“代理”几个名词? 求助,在启动struts2中启动tomcat时报错 请教有关将文本转成图片的方法 停止tomcat不关闭dos窗口如何设置,我tomcat是4.1.30 你用ant来部署过程序吗? 哪位能提供Tamino的相关资料?Tamino能在哪儿下载? jquery 的一个简单问题 hibernate问题, HibernateUtils下怎么画波浪线的啊
private static Connection conn = DBUtil.getConnection(); public void delete(long id) {
StringBuffer deleteSql = new StringBuffer();
deleteSql.append("delete from ").append(getTableName()).append(" where id=").append(id);
try {
PreparedStatement preparedStatement = conn.prepareStatement(deleteSql.toString());
preparedStatement.execute();
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
} public abstract String getTableName(); public abstract Class getParamClass(); public List<T> getList() {
String querySql = "select * from " + getTableName();
List list = new ArrayList();
try {
PreparedStatement preparedStatement = conn.prepareStatement(querySql);
ResultSet resultSet = preparedStatement.executeQuery();
ResultSetMetaData metaData = resultSet.getMetaData();
Object object = null;
Field[] fields = getParamClass().getDeclaredFields();
while (resultSet.next()) {
object = getParamClass().newInstance();
for (int i = 0; i < fields.length; i++) {
fields[i].setAccessible(true);
fields[i].set(object, resultSet.getObject(fields[i].getName()));
}
list.add(object);
}
/*
int columnCount = metaData.getColumnCount(); //获得查询的列数个数
while (resultSet.next()) {
object = getParamClass().newInstance();//根据String型的类名,得到一个Object
for (int i = 1; i <= columnCount; i++) { //循环设置该类的set方法的相关属性
String methodName = StringUtil.setMethodSetName(metaData.getColumnName(i));
Method method = getParamClass().getMethod(methodName, Object.class);
method.invoke(object, resultSet.getObject(metaData.getColumnName(i)));
}
list.add(object); //增加到List中
}*/
resultSet.close();
} catch (SQLException ex) {
ex.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}/*catch (InvocationTargetException e) {
e.printStackTrace();
}catch (NoSuchMethodException e) {
e.printStackTrace();
} */
return list;
} public void update(Object bean) {
Map<String, Object> fieldMap = getFieldMap(bean);
String id = getPrimarykeyName();
StringBuffer updateSql = new StringBuffer();
updateSql.append("update ").append(getTableName()).append(" set ");
Set<Entry<String, Object>> set = fieldMap.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
if (!iterator.hasNext()) {
updateSql.append(entry.getKey()).append("=? ").append("where ").append(id).append("=?");
} else if (!entry.getKey().equalsIgnoreCase(id)) {
updateSql.append(entry.getKey()).append("=?,");
} else if (entry.getKey().equalsIgnoreCase(id)) {
id = entry.getKey();
}
}
iterator = set.iterator();
int j = 1;
try {
PreparedStatement preparedStatement = conn.prepareStatement(updateSql.toString());
while (iterator.hasNext()) {
Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
if (!entry.getKey().equalsIgnoreCase(id)) {
preparedStatement.setObject(j++, entry.getValue());
}
}
preparedStatement.setObject(j, fieldMap.get(id));
preparedStatement.execute();
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
} @SuppressWarnings("unchecked")
private Map<String, Object> getFieldMap(Object bean) {
Class c = bean.getClass();
Field[] fields = c.getDeclaredFields();
Map<String, Object> fieldMap = new TreeMap<String, Object>();
for (int i = 0; i < fields.length; i++) {
String fieldName = fields[i].getName();
try {
fieldMap.put(fieldName, c.getMethod(StringUtil.getMethodGetName(fieldName)).invoke(bean));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
return fieldMap;
} private String getPrimarykeyName() {
String primarykeyNam = null;
try {
PreparedStatement preparedStatement = conn
.prepareStatement("select * from user_cons_columns where constraint_name=(select constraint_name from user_constraints where table_name = 'STUDENT' and constraint_type ='P')");
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
primarykeyNam = resultSet.getString(4);
}
} catch (SQLException e) {
e.printStackTrace();
}
return primarykeyNam;
}}