标签:
private <T extends Object> T getResult(Class<?> className, String sql,
String... params) {
List<?> list = getResultList(className, sql, params);
if (list != null && list.size() > 0) {
return (T) list.get(0);
}
return null;
}
private <T extends List<?>> T getResultList(Class<?> className, String sql,
String... params) {
try {
PreparedStatement st = conn.prepareStatement(sql);
for (int i = 1; i <= params.length; i++) {
st.setString(i, params[i - 1]);
}
List<Object> list = new ArrayList<>();
ResultSet result = st.executeQuery();
while (result.next()) {
Object object = Class.forName(className.getName())
.newInstance();
Field[] fields = className.getFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
field.setAccessible(true);
Class<?> typeClass = field.getType();
Constructor<?> con = typeClass.getConstructor(typeClass);
Object value = con.newInstance(result.getString(field
.getName()));
field.set(object, value);
}
list.add(object);
}
return (T) list;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
注意:类的变量名必须与数据表中的字段名相同.
标签:
原文地址:http://my.oschina.net/oldfeel/blog/499137