Obtenha a lista de todos os nomes de tabela da primavera simplesjdbctemplate
-
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.
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.