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