当前位置:Gxlcms > 数据库问题 > jdbc 可处理事物的通用增删查改函数

jdbc 可处理事物的通用增删查改函数

时间:2021-07-01 10:21:17 帮助过:9人阅读

使用PreparedStatement实现对不同表的通用的返回一个对象的查询操作 //使用泛型机制,参数里先传入一个类的类型 public static <T> T getInstance(Connection con,Class<T> clazz,String sql,Object...args) { PreparedStatement ps = null; ResultSet res = null; try { ps=con.prepareStatement(sql); for(int i=0;i<args.length;i++) { ps.setObject(i+1, args[i]); } //获得数据集和元数据集 res = ps.executeQuery(); ResultSetMetaData rsmd = res.getMetaData(); int col = rsmd.getColumnCount(); if(res.next()) { T t = clazz.newInstance(); for(int i=0;i<col;i++) { Object value = res.getObject(i+1); //要获得的数据值 String colLabel = rsmd.getColumnLabel(i+1); //要获得的元数据名称 //通过反射给t对象指定的colName属性赋值为value Field field = clazz.getDeclaredField(colLabel); field.setAccessible(true); field.set(t,value); } System.out.println("执行成功"); return t; } } catch(Exception ex) { ex.printStackTrace(); } finally { JDBCUtils.closeResource(null, ps, res); } return null; } //返回对不同表的通用的返回多个对象的查询操作 --考虑上事物的版本 public static <T> ArrayList<T> getForList(Connection con,Class<T> clazz,String sql,Object...args){ PreparedStatement ps = null; ResultSet res = null; try { con=JDBCUtils.getConnection(); ps=con.prepareStatement(sql); for(int i=0;i<args.length;i++) { ps.setObject(i+1, args[i]); } //获得数据集和元数据集 res = ps.executeQuery(); ResultSetMetaData rsmd = res.getMetaData(); int col = rsmd.getColumnCount(); ArrayList<T> list = new ArrayList<T>(); while(res.next()) { T t = clazz.newInstance(); for(int i=0;i<col;i++) { Object value = res.getObject(i+1); //要获得的数据值 String colLabel = rsmd.getColumnLabel(i+1); //要获得的元数据名称 //通过反射给t对象指定的colName属性赋值为value Field field = clazz.getDeclaredField(colLabel); field.setAccessible(true); field.set(t,value); } list.add(t); } System.out.println("执行成功"); return list; } catch(Exception ex) { ex.printStackTrace(); } finally { JDBCUtils.closeResource(null, ps, res); } return null; }

通用修改函数

//通用增删改,参数为预编译的sql,和可变形参args用来充当占位符 --可处理事物版本
    public static int update(Connection con,String sql,Object ...args) {
        PreparedStatement ps=null;
        try {
            //1.获取连接
            con=JDBCUtils.getConnection();
            //2.预编译sql,返回ps实例
            ps=con.prepareStatement(sql);
            //填充占位符,sql中的占位符个数=args数组长度
            for(int i=0;i<args.length;i++) {
                ps.setObject(i+1, args[i]);
            }
            //4.执行, excute()方法如果执行查询操作,则此方法返回true,如果执行增删改,则返回false
            //ps.execute();
            return ps.executeUpdate();
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
        finally {
            //5.关闭资源
            JDBCUtils.closeResource(null, ps);
        }
        return 0;
    }
    

 

jdbc 可处理事物的通用增删查改函数

标签:ext   result   增删改   泛型   机制   --   编译   trace   return   

人气教程排行