jdbc 可处理事物的通用增删查改函数
Posted zsbenn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdbc 可处理事物的通用增删查改函数相关的知识,希望对你有一定的参考价值。
首先弄清四种隔离级别的和三种数据并发 之间的关系
通用查询函数
//使用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 可处理事物的通用增删查改函数的主要内容,如果未能解决你的问题,请参考以下文章
JDBC课程4--使用PreparedStatement进行增删查改, JDBCTools新增对应的的功能,模拟SQL注入
c++中的顺序表写法,主要实现(增删查改,构造函数,运算符重载)
JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql