...不知道有没有和我一样懒的,表的列太多,一个一个弄太麻烦,每次都下断点调试更麻烦,还是直接输出省事
package ssh.util;
import java.lang.reflect.Method;
/**
* 利用反射生成hibernate映射类的toString方法
* @author gary
*
*/
public class GenerateToString {
/**
* 覆盖toString
* @param classPath 包名+类名,如ssh.vo.User
* @return
*/
public static String getToString(String classPath){
Class<?> clazz = null;
try {
clazz = Class.forName(classPath);
} catch (ClassNotFoundException e) {
System.out.println("找不到类");
return null;
}
StringBuffer sb = new StringBuffer();
Method[] methods = clazz.getMethods();
for (int i = 1; i < methods.length; i++) {
String methodsName = methods[i].getName();
if(methodsName.startsWith("set")){
String attribute = (char)(methodsName.charAt(3) + 32) + methodsName.substring(4);
sb.append(" + \"," + attribute + ": \" + " + attribute);
}
}
return "public String toString(){return \"" + sb.substring(5) + ";}";
}
}
junit测试:
@Test
public void testGetToString() {
System.out.println(GenerateToString.getToString("ssh.vo.User"));
}
结果:
public String toString(){return "userId: " + userId + ",userName: " + userName + ",password: " + password + ",realName: " + realName + ",lastLoginIp: " + lastLoginIp + ",lastLoginTime: " + lastLoginTime;}