import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List; /** * @author zhangdapeng * @version 1.0 * @since 1.0 */ public class DBResultSetReflectionUtil { public static List obtainEntityObject(ResultSet rs, Class cls) throws Exception { List list = new ArrayList<>(); Field[] fields = cls.getDeclaredFields(); while (rs.next()) { Object obj = newInstance(cls); for (int i = 0; i < fields.length; i++) { Class<?> type = fields[i].getType(); String fieldName = fields[i].getName(); if (type.getName().equals(String.class.getName())) { String value = rs.getString(fields[i].getName()); setProperty(obj, fieldName, value); } } list.add(obj); } return list; } private static Object newInstance(Class<?> cls) throws Exception { return cls.newInstance(); } private static void setProperty(Object obj, String name, Object value) throws Exception { Class<? extends Object> clazz = obj.getClass(); String methodName = returnSetMethodName(name); Method[] ms = clazz.getMethods(); for (Method m : ms) { if (m.getName().equals(methodName)) { if (m.getParameterTypes().length == 1) { Class<?> clazzParameterType = m.getParameterTypes()[0]; setFieldValue(clazzParameterType.getName(), value, m, obj); break; } } } } private static void setFieldValue(String parameterTypeName, Object value, Method m, Object obj) throws Exception { if (parameterTypeName.equals(int.class.getName())) { value = new Integer(Integer.parseInt(value.toString())); m.invoke(obj, value); return; } if (parameterTypeName.equals(String.class.getName())) { m.invoke(obj, value); return; } } private static String returnSetMethodName(String name) { name = name.substring(0, 1).toUpperCase() + name.substring(1, name.length()); return "set" + name; } }
参考:
http://blog.csdn.net/philosophyatmath/article/details/40710627