我正在尝试为Postgres的BLOB创建一个MyBatis自定义FILE类型处理程序。
以下是我需要实现的方法来实现接口:
@Override
public File getNullableResult(ResultSet rs, String columnName) throws SQLException {
1.get current connection
2.get postgreSQL LargeObjectManager from current connection
3.get oid from ResultSet, so the Larget Object can be found
4.read the large object and rewrite it into a file
5.return the file
}
但是我不知道在这种情况下如何获得当前连接。有没有办法从ResultSet获取连接?
提前致谢,
更新
PostgreSQL以特殊(非标准)方式实现blob(大对象,而不是bytea)。它将所有blob保存在pg_largeobject表中,并使用oid作为"指针"所以你可以从真实的桌子中引用blob。
Postgres JDBC驱动程序具有独立的API来处理blob。以下链接中的更多详细信息: http://jdbc.postgresql.org/documentation/91/binary-data.html
答案 0 :(得分:1)
您可以使用:
Connection connection = rs.getStatement().getConnection();
但请检查此方法以直接从rs
获取BLOB数据:
rs.getBinaryStream("myBlobColumn");