/**
* @Description: * sql查询结果直接转为List<T>结果
* * 该sql语句和Bean里面的属性是区分大小写的,所以尽量保持一致【要么大写】,【要么小写】
* @author: xxxxxx
* @date 2013/4/27 17:53
*/
@Override
public <T> List<T> getListTBySql(String sql, Class<T> beanClass) {
List<Map<String, Object>> mapList = this.getListMapBySql(sql);
if (mapList.size() == 0) {
return new ArrayList<>();
}
List<T> list = new ArrayList<T>();
Field[] fields = beanClass.getDeclaredFields();
String propertyName;
Map<String, Object> hashMap;
for (int i = 0; i < mapList.size(); i++) {
if (fields == null || fields.length == 0) {
break;
}
hashMap = new TreeMap<>();
Object obj = null;
try {
obj = Class.forName(beanClass.getName()).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
for (Field field : fields) {
propertyName = field.getName();
/**
* 如果数据库查询返回的属性keys集合map不包含属性名称-》则赋值为空
* else -》 赋值对应的数据库值
*/
if (mapList.get(i).containsKey(propertyName)) {
hashMap.put(propertyName, mapList.get(i).get(propertyName));
} else {
hashMap.put(propertyName, null);
}
}
try {
BeanUtils.populate(obj, hashMap);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
list.add((T) obj);
}
return list;
}