“皇帝Dao”。
public class EmperorDao {
private Connection conn;
private PreparedStatement prst;
private ResultSet rest;
{
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/rifngah?serverTimezone=GMT%2B8", "root", "123456");
System.out.println("驱动连接成功");
} catch (Exception e) {
// TODO: handle exception
System.out.println("驱动连接成功11");
}
}
@SuppressWarnings("unchecked")
public <W> List<W> query(Class<? extends Object> clx,String sql,Object...args)throws Exception{
List<W> list = new ArrayList<>();
prst = conn.prepareStatement(sql);
for(int i=0;i<args.length;i++) {
prst.setObject(i+1, args[i]);
}
rest = prst.executeQuery();
String[] methodNames = new String[clx.getDeclaredFields().length];
//获取目标实体类中的set。。。属性名。
for(int i=0;i<methodNames.length;i++) {
methodNames[i] = "set"+clx.getDeclaredFields()[i].getName().substring(0, 1).toUpperCase()
+clx.getDeclaredFields()[i].getName().substring(1);
}
for(int i=0;rest.next();i++) {
Object obj = clx.newInstance();
for(int j=0;j<methodNames.length;j++) {
//这里去获取*类的方法
Method method = clx.getDeclaredMethod(methodNames[j],clx.getDeclaredFields()[j].getType());
method.invoke(obj, rest.getObject(j+1));
}
list.add((W)obj);
}
return list;
}
}
Main方法
public class Studentmain {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
new EmperorDao().query(Student.class, "select * from student").forEach(i ->{
System.out.println(i);
});
}
}