/*
* @Author:
* @Description :针对所有表的所有数据通用查询方法
*/
public <T> List<T> getForList(Class<T> clazz, String sql, Object...args){
Connection conn = null;
PreparedStatement ps = null;
ResultSet resultSet = null;
try {
//1.获取连接
conn = JDBCutils.getConnection();
//2.预编译sql语句
ps = conn.prepareStatement(sql);
//3.填充占位符
for (int i = 0; i < args.length; i++) {
ps.setObject(i+1,args[i]);
}
//4.执行, 获取查询结果集
resultSet = ps.executeQuery();
//5.处理结果集
ArrayList<T> list = new ArrayList<>();
while (resultSet.next()){
//获取列数
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnCount = rsmd.getColumnCount();
//根据列数进行循环给对象相应属性赋值
T t = clazz.newInstance();
//将表中的每一行数据都赋值给一个对象
for (int i = 0; i < columnCount; i++) {
//获取列名
String columnLabel = rsmd.getColumnLabel(i + 1);
//获取列值
Object object = resultSet.getObject(i + 1);
//通过反射给对象赋值
Field field = clazz.getDeclaredField(columnLabel);
field.setAccessible(true);
field.set(t,object);
}
list.add(t);
}
return list;
} catch (Exception e) {
e.printStackTrace();
} finally {
//6.资源关闭
JDBCutils.closeQueryResource(conn,ps,resultSet);
}
return null;
}
JDBC之---针对所有表的所有数据通用查询方法
最新推荐文章于 2024-04-12 15:54:35 发布