枚举反射的应用(sql update语句匹配)
枚举反射的应用(sql update语句匹配)
?
protected void update(T o, boolean deleteflag) {StringBuilder sd = new StringBuilder("update ");String className = o.getClass().getSimpleName();if(className.contains("VO")) {sd.append(className.toLowerCase().substring(0, className.length()-2)).append(" ");}else {sd.append(className.toLowerCase()).append(" ");}sd.append("set ");StringBuilder id = new StringBuilder("where ");if(deleteflag) {id.append("deleteflag=0 and ");}try {for(Method m : o.getClass().getDeclaredMethods()) {String name = m.getName();if (name.startsWith("get")) {sd.append(name.substring(3).toLowerCase()).append("=");if(m.invoke(o) instanceof String) {sd.append("'").append(m.invoke(o)).append("', ");}else if(m.invoke(o) instanceof Enum) {Class enumClass = m.invoke(o).getClass().getFields()[0].getDeclaringClass();if(enumClass.isEnum()) {for(Object obj : enumClass.getEnumConstants()) {if(((Enum)obj).name().equals(m.invoke(o).toString())) {for(Method mEnum : enumClass.getDeclaredMethods()) {String enumName = mEnum.getName();if(enumName.startsWith("get")) {sd.append("'").append(mEnum.invoke(m.invoke(o))).append("', ");}}}}}}else {sd.append(m.invoke(o)).append(", ");}}if(name.startsWith("primaryGet")) {id.append(name.substring(10).toLowerCase()).append("=");if(m.invoke(o) instanceof String) {id.append("'").append(m.invoke(o)).append("';");}else {id.append(m.invoke(o)).append(";");}}}sd.delete(sd.length()-2, sd.length());sd.append(" ");sd.append(id);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}System.out.println(sd.toString());//executeTrans(sd.toString());}
?
或者:
Object myEnum=null; Class enumClass=(Class)Class.forName("com.reflectenum.MyEnum");//MyEnum包含CAT,DOG,PIG if(enumClass.isEnum()){ for(Object obj:enumClass.getEnumConstants()){ if(((Enum)obj).name().equals("DOG")){ result=obj; } } } System.out.println(result);//将打印出DOG
?
?
?
?