增、删、改通用方法:
public static void updateobj(String sql,Object...args){ Connection connection=null; PreparedStatement pstm=null; try{ connection= JDBCUtill.getConnection(); pstm=connection.prepareStatement(sql); for(int i=0;i<args.length;i++) { pstm.setObject((i + 1), args[i]); } //执行操作 pstm.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ //关闭 JDBCUtill.colseResource(pstm,connection); } }
通用查询一组数据的方法:
//Class<T>clazz:返回的值得类型 //sql SQL语句返回值 //object...args 动态可变参数 public static <T> T selectobj(Class<T> clazz,String sql,Object...args){ Connection connection=null; PreparedStatement pstm=null; ResultSet rs=null; try{ //连接数据库 connection= JDBCUtill.getConnection(); 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 count=metaData.getColumnCount(); T t=clazz.newInstance(); //等同于 User user =new User; //判断是否有值,然后打印 if(rs.next()){ 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); } return t; } } catch (Exception e) { e.printStackTrace(); }finally {
//关闭 JDBCUtill.colseResource2(rs,pstm,connection); } return null; }
通用查询所有数据的方法:
/**
* 查询多组数据的方法
*/
//Class<T>clazz:返回的值得类型
public static <T> List<T> selectallobj(Class<T> clazz, String sql, Object...args){
Connection connection=null;
PreparedStatement pstm=null;
ResultSet rs=null;
try{
//连接数据库
connection= JDBCUtill.getConnection();
//预编译sql
pstm=connection.prepareStatement(sql);
//3.填充占位符
for (int i=0; i<args.length;i++){
pstm.setObject((i+1),args[i]);
}
//4.执行操作
rs = pstm.executeQuery();
//创建一个与数据并接收返回值
ResultSetMetaData metaData=rs.getMetaData();
//获取数据表中的列数
int count =metaData.getColumnCount();
ArrayList<T> list = new ArrayList<T>();
//判断是否有值 ,并打印
while(rs.next()){
T t=clazz.newInstance(); //等同于 User user =new User;
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{
//关闭
JDBCUtill.colseResource2(rs,pstm,connection);
}
return null;
}
public class TestSelectAll { public static void main(String[] args) { String sql="SELECT *FROM USER "; List <User> users=TestCurd.selectallobj(User.class,sql); for(User user:users){ System.out.println(user.toString()); } } }