You can override BaseTypeHandler
to support Blob
handling like this:
@MappedTypes(Blob.class)
public class CustomBlobTypeHandler extends BaseTypeHandler<Blob> {
@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);
}
}
Then register it with the SqlSessionFactoryBean
using the typeHandlersPackage
property:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="in.ksharma.model" />
<property name="typeHandlersPackage" value="in.ksharma.mybatis.typehandlers" />
<property name="mapperLocations" value="classpath*:*-mapper*.xml" />
</bean>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…