gpt4 book ai didi

java - 如何使用 MyBatis 处理 blob?

转载 作者:行者123 更新时间:2023-12-01 12:07:00 25 4
gpt4 key购买 nike

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

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

最佳答案

您可以重写BaseTypeHandler来支持Blob处理,如下所示:

@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);
}

}

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

<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>

关于java - 如何使用 MyBatis 处理 blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27522589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com