You can override BaseTypeHandler to support Blob processing as follows:
@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 using SqlSessionFactoryBean using the SqlSessionFactoryBean 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>
source share