我正在尝试通过JDBC实现从一种数据库类型到另一种数据库类型的数据传输。
使用connection.getMetaData().getColumnType()
我可以获得列的JDBCType。
如何使用它来让java Class对象能够使用resultSet.getObject(i, XXX.class)
?
当然我可以做这样的事情https://stackoverflow.com/a/5253901/7849631
是否有任何库已经实现了这个accoridng数据库供应商?或者也许有特殊的结果集在某处浮动?
这是一个了解我的问题的简单示例:
private List<Map<String, Object>> readDataFromResultSet(ResultSet resultSet, Map<String, JDBCType> columnNamesTypes) throws SQLException {
List<Map<String, Object>> dataToTransfer = new ArrayList<>();
while (resultSet.next()) {
Map<String, Object> value = new LinkedHashMap<>();
for (String columnName : columnNamesTypes.keySet()) {
final JDBCType type = columnNamesTypes.get(columnName);
value.put(columnName, resultSet.getObject(columnName, **convertJDBCTypeToClass**(type)));
}
dataToTransfer.add(value);
}
return dataToTransfer;
}
更新:已使用org.hibernate.type.descriptor.sql.JdbcTypeJavaClassMappings
解决此问题