java使用反射将实体类插入数据库表,,昨天,要向一个表(Rig
分享于 点击 30403 次 点评:288
java使用反射将实体类插入数据库表,,昨天,要向一个表(Rig
昨天,要向一个表(RightOrder 权益单)插数据,里面有92个字段,因为框架没有dao工具,写了实体View后,再都不想在insert的时候重新写一次了,简直是痛不欲生,于是诞生了如下代码,简单,有些可取之处 (好吧,我承认主要目的是偷懒 ^^ )不说废话了,直上代码:
[Java]代码
/** * 插入表数据 * @param tableName 表名 * @param obj 实例 * @param sqlUtility * @author 钟小华 2012-05-13 */ 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(); } }
用户点评