ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

通用增删改查的方式

2020-06-26 15:02:27  阅读:256  来源: 互联网

标签:... 通用 args 改查 connection sql 增删 null pstm


增、删、改通用方法:

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;
    }
————————————————

 

标签:...,通用,args,改查,connection,sql,增删,null,pstm
来源: https://www.cnblogs.com/gnos/p/13195051.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有