Get list of all table names from spring SimpleJdbcTemplate

java, spring-jdbc

Solution

Spring has a `DatabaseMetaDataCallback` object that can take care of some of the boiler plate aspects of the solution that duffymo has linked to. You can then pass that object when calling `JDBCUtils.extractDatabaseMetaData`.

An example of making the same call you're trying to make with those classes can be found here.

Sample code from that link:

Class:

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;
        }
    }

Usage:

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

Problem

Is there a way to obtain the list of all table names in the database using Spring's SimpleJdbcTemplate? The database being queried is Oracle if that helps in any way. Thanks.

Original source