将实例插入数据库表(利用反射,通用)
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(); } }
更多精彩
赞助商链接