日期:2014-05-16 浏览次数:20314 次
// sql语句 StringBuffer sql = new StringBuffer("insert into"); sql.append(tableName).append("("); // 参数,实际上对应表字段 StringBuffer params = new StringBuffer(" values("); // 字段值 ArrayList values = new ArrayList(); //解析属性信息 Field[] fields = obj.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; // 设置安全访问权限,true可以访问私有属性 field.setAccessible(true); // 属性名 String fieldName = field.getName(); Object value = field.get(obj); sql.append(fieldName + ","); params.append("?,"); values.add(value); } sql.append(sql.deleteCharAt(sql.length() -1) + ")"); params.append(params.deleteCharAt(params.length() -1) + ")"); sql.append(params); PreparedStatement st = conn.prepareStatement(sql.toString()); for (int i = 0; i < values.size(); i++) { st.setObject(i + 1,values.get(i)); } // 执行 st.executeUpdate();
/** * * 获取目标对象的所有属性(包括继承属性) * * @param obj 目标对象 * @return 所有属性(包括继承属性) * @see [类、类#方法、类#成员] */ public Field[] getAllClassField(Object obj) { Field[] allfield ; // 如果其父类不是Object,则有基类 if (!obj.getClass().getSuperclass().equals(Object.class)) { // 递归,取得其基类的属性数组 Field[] fields = getAllClassField(obj.getClass().getSuperclass()); // 取得自己的属性数组 Field[] myFields = obj.getClass().getDeclaredFields(); // 属性数组合并 allfield = new Field[fields.length + myFields.length]; System.arraycopy(fields, 0, allfield, 0, fields.length); System.arraycopy(myFields, 0, allfield, fields.length, myFields.length); } else { // 没有基类,直接返回自己的属性数组 allfield = obj.getClass().getDeclaredFields(); } return allfield; }