重载两个编辑数据的方法分别根据实体类对象和字段值的可变参数更新数据库
/** * 根据传入的实体类对象更新数据库 * @param con 数据库连接对象 * @param sql SQL语句 * @param t 数据库表对应的实体类对象 * @return 更新的行数 * @throws Exception */ public static<T> int edit(Connection con,String sql,T t) throws Exception{ ps = con.prepareStatement(sql); Class<?> cls = t.getClass(); String[] columnNames = sql.split("SET")[1].split("WHERE")[0].trim().split(","); for (int i=0;i<columnNames.length;i++) { columnNames[i] = columnNames[i].split("=")[0]; Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { Column column = field.getAnnotation(Column.class); if(column!=null && columnNames[i].equals(column.values())){ String fieldName = field.getName(); Method m; m = cls.getDeclaredMethod("get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1)); Object o = m.invoke(t); ps.setObject(i+1,o); } } } String conditions = sql.split("WHERE")[1].split("=")[0].trim(); Object o = cls.getDeclaredMethod("get"+conditions.substring(0, 1).toUpperCase()+conditions.substring(1)).invoke(t); ps.setObject(columnNames.length+1, o); return ps.executeUpdate(); } /** * 根据传入的可变参数更新数据库 * @param con 数据库连接对象 * @param sql SQL语句 * @param param 储存字段值得可变参数列表 * @return 更新的行数 * @throws Exception */ public static int edit(Connection con,String sql,Object... param) throws Exception{ ps = con.prepareStatement(sql); for (int i=0;i<param.length;i++) { ps.setObject(i+1, param); } return ps.executeUpdate(); }