spring jdbcTemplate中获取jdbc Connection并执行操作

实际应用例子
在项目中需要获取数据库中元数据相关信息,比如表名,字段名,长度等
jdbcTemplate 可以通过SqlRowSetMetaData 可以获取到部分元数据,但是不能获取备注信息(comment中的内容)

已经有jdbcTemplate对象,只需要通过jdbcTemplate获取jdbc Connection即可获取全部信息

代码示例如下:

List<Dtfd> dtfds = new ArrayList<Dtfd>();
dwJdbcTemplate.execute(new ConnectionCallback<List<Dtfd>>() {
    @Override
    public List<Dtfd> doInConnection(Connection con) throws SQLException, DataAccessException {
        DatabaseMetaData dbmd = con.getMetaData();
        // 表名列表
        String[] types = { "TABLE" };
        ResultSet tableRS = dbmd.getTables(null, null, dtco, types);
        tableRS.last();
        int cnt = tableRS.getRow();
        tableRS.beforeFirst();
        if (1 != cnt) {
            return null;
        }
        while (tableRS.next()) {
            String tablename = tableRS.getString("TABLE_NAME");
            ResultSet resultSet = dbmd.getColumns(null, null, tablename, null);
            while (resultSet.next()) {
                String name = resultSet.getString("COLUMN_NAME");
                String type = resultSet.getString("TYPE_NAME");
                String colRemarks = resultSet.getString("REMARKS");
                int size = resultSet.getInt("COLUMN_SIZE");
                Dtfd dtfd = new Dtfd();
                dtfd.setDtco(dtco);
                dtfd.setColu(name);
                dtfd.setClna(colRemarks);
                dtfd.setDttp(type);
                dtfd.setDtle(size);
                dtfds.add(dtfd);
            }
        }
        return null;
    }
});
return dtfds;
阅读 4.1k

推荐阅读