如何使用MyBatis处理blob?

java.sql.Blob没有默认处理程序。 文档建议使用byte[]数组,但我有一个使用Blob的遗留类。

如何为Blob定义自定义处理程序?

您可以覆盖BaseTypeHandler以支持Blob处理,如下所示:

 @MappedTypes(Blob.class) public class CustomBlobTypeHandler extends BaseTypeHandler { @Override public void setNonNullParameter(PreparedStatement ps, int i, Blob parameter, JdbcType jdbcType) throws SQLException { InputStream is = parameter.getBinaryStream(); try { ps.setBinaryStream(i, is, is.available()); } catch (IOException e) { throw new SQLException(e); } } @Override public Blob getNullableResult(ResultSet rs, String columnName) throws SQLException { return rs.getBlob(columnName); } @Override public Blob getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return rs.getBlob(columnIndex); } @Override public Blob getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return cs.getBlob(columnIndex); } } 

然后使用typeHandlersPackage属性将其注册到SqlSessionFactoryBean