/**
* 返回一个集合
* @param sql
* @param cls
* @param obj
* @return
*/
public List<E> listSelect(String sql,E cls,Object... obj) {
List<E>list=new ArrayList<E>();;
try {
stem=conn.prepareStatement(sql);
if(obj!=null) {
for (int i=0;i<obj.length;i++) {
stem.setObject(i+1, obj[i]);
}
}
set=stem.executeQuery();
//得到类里面对应的属性
Field[] fileds=cls.getClass().getDeclaredFields();
while(set.next()) {
//创建对象
@SuppressWarnings("unchecked")
E cl=(E) Class.forName(cls.getClass().getName()).newInstance();
for(Field f1 : fileds){
//根据属性名得到映射的字段
Field l=cl.getClass().getDeclaredField(f1.getName());
l.setAccessible(true);
//判断他是什么数据类型
// System.out.println(l.getType().getTypeName());
if(l.getType().getTypeName().equals("java.lang.String")) {
//给这个映射的字段赋值 ,第一个参数是对象,第二个参数是值
l.set(cl,set.getString((l.getName())));
}else if(l.getType().getTypeName().equals("int")) {
l.set(cl,set.getInt((l.getName())));
}else if(l.getType().getTypeName().equals("double")) {
l.set(cl,set.getDouble((l.getName())));
}else if(l.getType().getTypeName().equals("java.util.Date")) {
l.set(cl,set.getDate((l.getName())));
}
}
list.add(cl);
}
} catch (SQLException | InstantiationException | IllegalAccessException | ClassNotFoundException | NoSuchFieldException | SecurityException e) {
e.printStackTrace();
}finally {
close(conn,stem,set);
}
return list;
}