zoukankan      html  css  js  c++  java
  • JDBC_查询

    1.通用的查询操作,结果返回一条数据

    //通用的查询操作
        public <T> T getInstance(Connection conn, Class<T> tClass, String sql, Object...args) {
            PreparedStatement ps = null;
            ResultSet rs = null;
            try {
                ps = conn.prepareStatement(sql);
                for (int i = 0; i < args.length; i++) {
                    ps.setObject(i+1, args[i]);
                }
                rs = ps.executeQuery();
                //获取结果集中的元数据
                ResultSetMetaData metaData = rs.getMetaData();
                //通过meteData获取结果集中的列数
                int columnCount = metaData.getColumnCount();
                if (rs.next()) {
                    T t = tClass.newInstance();
                    //处理结果集一行数据中的每一列
                    for (int i = 0; i < columnCount; i++) {
                        //获取列值
                        Object columValue = rs.getObject(i+1);
                        //获取每个列的列名
                        String columLabel = metaData.getColumnLabel(i+1);
    
                        Field field = tClass.getDeclaredField(columLabel);
                        field.setAccessible(true);
                        field.set(t, columValue);
                    }
                    return t;
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JDBCUtils.closeResource(null, ps, rs);
            }
    
            return null;
        }

    2.通用的查询操作,结果返回一个集合

    //通用的查询操作集合
        public <T> List<T> getForList(Connection conn, Class<T> tClass, String sql, Object...args) {
            PreparedStatement ps = null;
            ResultSet rs = null;
            try {
                ps = conn.prepareStatement(sql);
                for (int i = 0; i < args.length; i++) {
                    ps.setObject(i+1, args[i]);
                }
                rs = ps.executeQuery();
    
                ResultSetMetaData metaData = rs.getMetaData();
    
                int columnCount = metaData.getColumnCount();
                ArrayList<T> list = new ArrayList<>();
                while (rs.next()) {
                    T t = tClass.newInstance();
                    for (int i = 0; i < columnCount; i++) {
                        Object columValue = rs.getObject(i + 1);
    
                        String columnLabel = metaData.getColumnLabel(i + 1);
    
                        Field field = tClass.getDeclaredField(columnLabel);
                        field.setAccessible(true);
                        field.set(t, columValue);
                    }
                    list.add(t);
                }
                return list;
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JDBCUtils.closeResource(null, ps, rs);
            }
            return null;
        }
  • 相关阅读:
    LeetCode -- 最大连续乘积子序列
    openCV 和GDI画线效率对照
    java并发编程之CountDownLatch
    约瑟夫环问题
    (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)
    群“模”乱舞之简单工厂模式
    在iPad iOS8环境下打开相冊或者拍照
    js斐波那契数列求和
    cocos2d-x 显示触摸操作(显示水波点击效果,用于视频演示)
    DOM基础及DOM操作HTML
  • 原文地址:https://www.cnblogs.com/Gazikel/p/14149284.html
Copyright © 2011-2022 走看看