增、删、改通用方法:
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; }
通用查询所有数据的方法:
public <T> List<T> queryMore(Class<T> clazz,String sql,Object...args){ Connection conn =null; PreparedStatement pstm=null; ResultSet rs= null; List<T> list = new ArrayList<T>(); try { //1.连接数据 conn= JdbcUtils.getconn(); //2.编写带有占位符的sql(省略) //3.预编译sql pstm=conn.prepareStatement(sql); //4.填充占位符 for(int i=0;i<args.length;i++){ pstm.setObject(i+1, args[i]); } //5.执行 rs=pstm.executeQuery(); //需要用到元数据 ResultSetMetaData rsmd = rs.getMetaData(); //获取具体的列数 int columnCount = rsmd.getColumnCount(); while(rs.next()){ T t = clazz.newInstance(); for(int i=0;i<columnCount;i++){ //获取具体列的值 Object value = rs.getObject(i+1); //获取列的别名 String label = rsmd.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{ //6.关闭 JdbcUtils.close(rs, pstm, conn); } return null; } ————————————————