将实例插入数据库表(利用反射,通用)
2012-05-14 10:27:05 来源:WEB开发网核心提示: 要向一个表(RightOrder 权益单)插数据,里面有92个字段,将实例插入数据库表(利用反射,通用),因为框架没有dao工具,写了实体View后
要向一个表(RightOrder 权益单)插数据,里面有92个字段,因为框架没有dao工具,写了实体View后,再都不想在insert的时候重新写一次了
/**
* 插入表数据
* @param tableName 表名
* @param obj 实例
* @param sqlUtility
*/
public void insert(String tableName, Object obj, SQLUtility sqlUtility) throws
GeneralException {
Field fields[] = obj.getClass().getDeclaredFields();
StringBuffer insertSql = new StringBuffer();
insertSql.append(" INSERT INTO "+tableName+"(");
StringBuffer valueSql = new StringBuffer();
valueSql.append(" VALUES (");
try {
for (int i = 0; i < fields.length; i++) {
fields[i].setAccessible(true);
insertSql.append(fields[i].getName());
if (fields[i].getType().getName().endsWith("Double") ||
fields[i].getType().getName().endsWith("Integer") ||
fields[i].getType().getName().endsWith("int")) {
valueSql.append(fields[i].get(obj));
}
else {
valueSql.append("'" + fields[i].get(obj) + "'");
}
if (i != fields.length - 1) {
insertSql.append(",");
valueSql.append(",");
}
else {
insertSql.append(")");
valueSql.append(")");
}
}
sqlUtility.executeUpdate(insertSql.toString() + valueSql.toString());
sqlUtility.checkSqlCode();
}
catch (IllegalAccessException ex1) {
ex1.printStackTrace();
}
catch (IllegalArgumentException ex1) {
ex1.printStackTrace();
}
}
更多精彩
赞助商链接
