用到的是jdbc进行对数据库查询,这里是根据JavaBean中的属性名进行查询的,所以属性名要和字段名一致,然后再利用反射,将表字段映射到JavaBean中对应的属性。
例子:
public class JdbcResult {
//这里需要获取两个参数,查询结果,JavaBean
public static <T> List<T> getResult(ResultSet rs,T t){
Class<T> clazz=(Class<T>) t.getClass();
//获取JavaBean里面的所有属性
Field[] field = clazz.getDeclaredFields();
T obj=null;
//创建list容器,存放映射后的JavaBean对象
List<T> list=new ArrayList<T>();
try {
//开始遍历查询结果
while(rs.next()){
//创建Javabean对象
obj =clazz.newInstance();
//循环将查询结果写入对应的JavaBean属性中
for (Field f : field) {
//判断是否查询到对应的值
if(rs.getObject(f.getName())!=null){
//跳过检查,这里访问的时私有属性
f.setAccessible(true);
//将查询到的值付给对应的属性
f.set(obj, rs.getObject(f.getName()));
}
}
//把每一列都添加到容器中
list.add(obj);
}
} catch (SQLException e) {
System.err.println("结果集遍历失败");
e.printStackTrace();
} catch (Exception e) {
System.err.println("数据读取失败");
e.printStackTrace();
}
return list;
}
}