我在一个项目中,我有一个查询,从LONGBLOB场在MySQL数据库中获取数据使用MyBatis的。 我希望得到的结果作为一个字节数组( byte[]
所以我试试这个:
<select id="fetchData" resultType="_byte[]" parameterType="_long">
select blobData from Table where id = #{id}
</select>
然而,这并不正常工作。 我得到以下错误:
java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.Object;
at org.apache.ibatis.binding.MapperMethod.convertToArray(MapperMethod.java:146)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:129)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:90)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:40)
有个声音告诉我,我应该指定一个类型处理器( BlobTypeHandler
?),还是什么? 但是,在何处以及如何?
我要指出,我没有问题得到解决此问题,通过创建字节数组的包装类和使用结果地图:
<resultMap type="BlobData" id="BlobDataMap">
<constructor>
<idArg javaType="_long" column="id" />
<arg javaType="_byte[]" column="blobData" />
</constructor>
</resultMap>
不过我想知道如果有不涉及创建一个包装类更优雅的方式。