//1、多条查询方法
public class TestCrud {
public static void main(String[] args) {
String sql="select*from stus";
List users = TestCrud.queryOne(User.class, sql);
System.out.println(users.toString());
}
public static List queryOne(Class clazz, String sql, Object... ags) {
Connection connection = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
//1:连接数据库(我这边调用的是方法)
connection = JDBCutil.getConn();
//2:预编译
pst = connection.prepareStatement(sql);
//3:填充占位符
for (int i = 0; i < ags.length; i++) {
pst.setObject((i + i), ags[i]);
}
//4执行操作
rs = pst.executeQuery();
//5:判断是否有值,然后打印
//创建一个元数据类型接收返回值
ResultSetMetaData metaData = rs.getMetaData();
//获取表中具体的列数
int count = metaData.getColumnCount();
List list = new ArrayList();
while (rs.next()) {
T t = clazz.newInstance();
for (int i = 0; i < count; i++) {
//获取对应的字段值
Object value = rs.getObject((i + 1));
//获取到对应字段的别名
String label = metaData.getColumnLabel((i + 1));
//获取到对应的字段
Field field = clazz.getDeclaredField(label);
//设置可以自己设置的权限
field.setAccessible(true);
//将值装配对象
field.set(t,value);
}
list.add(t);
}
return list;
} catch (Exception e) {
e.printStackTrace();
}finally {
//关闭流(通用的方法)
JDBCutil.closeResourse2(rs,pst,connection);
}
return null;
}
}
//查询单条的方法
// public static T queryOne(Classclazz, String sql, Object... args) {
// Connection connection = null;
// PreparedStatement pstm = null;
// ResultSet rs = null;
// //连接数据库
// connection = JDBCutil.getConn();
// try {
// pstm = connection.prepareStatement(sql);
// for (int i = 0; i < args.length; i++) {
// pstm.setObject((i + 1), args[i]);
// }
// rs = pstm.executeQuery();
// ResultSetMetaData metaData = rs.getMetaData();
// int columnCount = metaData.getColumnCount();
// T t = clazz.newInstance();
// if (rs.next()) {
// for (int i = 0; i < columnCount; i++) {
// Object value = rs.getObject((i + 1));
// String label = metaData.getColumnLabel((i + 1));
// Field declaredField = clazz.getDeclaredField(label);
// declaredField.setAccessible(true);
// declaredField.set(t, value);
// }
// return t;
// }
// } catch (Exception e) {
// e.printStackTrace();
// }finally {
// JDBCutil.closeResourse2(rs,pstm,connection);
// }
// return null;
// }