Obtenha a lista de todos os nomes de tabela da primavera simplesjdbctemplate

StackOverflow https://stackoverflow.com/questions/1780677

  •  21-09-2019
  •  | 
  •  

Pergunta

Existe uma maneira de obter a lista de todos os nomes de tabela no banco de dados usando o springjdbctemplate da Spring?

O banco de dados que está sendo consultado é o Oracle se isso ajudar de alguma forma. Obrigado.

Foi útil?

Solução

A primavera tem um DatabaseMetaDataCallback Objeto que pode cuidar de alguns aspectos da placa da caldeira da solução à qual o Duffymo vinculou. Você pode passar esse objeto ao ligar JDBCUtils.extractDatabaseMetaData.

Um exemplo de fazer a mesma chamada que você está tentando fazer com essas aulas pode ser encontrada aqui.

Código de exemplo desse link:

Classe:

class GetTableNames implements DatabaseMetaDataCallback {

        public Object processMetaData(DatabaseMetaData dbmd) throws SQLException {
            ResultSet rs = dbmd.getTables(dbmd.getUserName(), null, null, new String[]{"TABLE"});
            ArrayList l = new ArrayList();
            while (rs.next()) {
                l.add(rs.getString(3));
            }
            return l;
        }
    }

Uso:

GetTableNames getTableNames = new GetTableNames();
try {
    Object o = JdbcUtils.extractDatabaseMetaData(dataSource, getTableNames);
    System.out.println(o);
} catch (MetaDataAccessException e) {
    System.out.println(e);
}

Outras dicas

Você sempre está livre para obter java.sql.databaseMetadata usando a conexão. Não há métodos no simplesjdbctemplate para ajudá -lo, mas, francamente, não há necessidade.

DatabaseMetaData md = c.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  System.out.println(rs.getString("TABLE_NAME"));
}

Consulte a exibição User_Tables e você as receberá.

Curva -se em Sqlplus, é claro, para ver a forma primeiro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top