gpt4 book ai didi

java - 使用 MyBatis 获取字节数组形式的 LONGBLOB

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:33 25 4
gpt4 key购买 nike

我在一个项目中使用 MyBatis,我有一个从 MySQL 数据库中的 LONGBLOB 字段获取数据的查询。我希望将结果作为字节数组 (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>

我仍然想知道是否有不涉及创建包装类的更优雅的方法。

最佳答案

在我的项目中,我们以这种方式使用 blob:

我们为我们使用的类定义一个结果映射:

<resultMap class="SomeClass" id="SomeClassResultMap">
<result property="classByteAttribute" column="blobData" />
<result property="classIdAttribute" column="id" />
</resultMap>

并且在 select 语句中我们使用这个结果映射

<select id="selectStatement" resultMap="SomeClassResultMap" parameterClass="Integer">
SELECT * FROM EXAMPLETABLE where id=#id#
</select>

执行后,blob 在字节数组中。

关于java - 使用 MyBatis 获取字节数组形式的 LONGBLOB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14232703/

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