实际应用例子
在项目中需要获取数据库中元数据相关信息,比如表名,字段名,长度等
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;