通用增删改查的方式
Posted gnos
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通用增删改查的方式相关的知识,希望对你有一定的参考价值。
增、删、改通用方法:
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> T selectallobj(Class<T> clazz,String sql,Object...args){
Connection connection=null;
PreparedStatement pstm=null;
ResultSet rs=null;
List<T> list=new ArrayList<T>();
try {
//1.连接数据库
connection= JDBCUtill.getConnection();
//2.预编译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();
T t=clazz.newInstance(); //等同于 User user =new User;
//判断是否有值 ,并打印
while(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();
}
return null;
}
以上是关于通用增删改查的方式的主要内容,如果未能解决你的问题,请参考以下文章