天天看点

Jdbc结果集Map映射

我的实际应用是,给我一个库,然后查询所有表,而且返回一条数据,我用Jdbc结果集,Map映射。

public List<Map<String, Object>> selectOneData(String tableName) {
        Connection conn = null;
        ResultSet rs = null;
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        try {
            conn = JdbcUtil.getConnection();
            String sql = "SELECT * FROM " + tableName + "WHERE ROWNUM = 1";
            rs = conn.createStatement().executeQuery(sql);
            Map<String, Object> oneDataMap = new HashMap<>();
            if (rs.next()) {
//              获取源数据
                ResultSetMetaData metaData = rs.getMetaData();
//            获取列的个数
                int columnCount = metaData.getColumnCount();
                for (int i = 1; i <= columnCount; i++) {
                    String columnName = metaData.getColumnName(i);
                    if (rs.getObject(i) != null) {
                        oneDataMap.put(columnName, rs.getObject(i));
                    } else {
                        oneDataMap.put(columnName, null);

                    }
                }
                list.add(oneDataMap);
            } else {

//              获取源数据
                ResultSetMetaData metaData = rs.getMetaData();
//            获取列的个数
                int columnCount = metaData.getColumnCount();
                for (int i = 1; i <= columnCount; i++) {
//                通过下标拿到所有到列名
                    String columnName = metaData.getColumnName(i);
//                                  列名,        列对应的数据
                    oneDataMap.put(columnName, null);
                }
                list.add(oneDataMap);
            }
            return list;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.close(rs, null, conn);
        }
        return list;
    }

           

如果有什么看不懂的可以联系我邮箱。[email protected]