一、映射字段类型
有两种,我都是试过了,都可以用。
//大文本字段
private byte[] dwbzd;
法一:
<result property="dwbzd" column="DWBZD" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" />
法二:
<result property="dwbzd" column="DWBZD" jdbcType="LONGVARBINARY"/>
二、SQL语句
sql语句与上边的映射方式没有关系,随便哪一个都行。一下语句大体相同,但是我在试用中,出现了问题,如果使用法二存入集合中存在空文本的时候,随后的实体就会报错。法一没有遇到同样的问题。
查阅后的解释是:使用了SELECT查询DUAL导致的后边的这个字段无法正确映射。
法一:
<foreach collection="list" item="photo" index="index" open="begin" close=";end;" separator=";">
INSERT INTO TABLE_NAME
(ID,DWBZD)
values
(#{photo.id, jdbcType=VARCHAR}, #{photo.dwbzd, jdbcType=BLOB}
)
</foreach>
法二:
此方法如果
BEGIN
INSERT INTO TABLE_NAME
(ID,DWBZD)
<foreach collection="list" item="photo" index="index" separator="UNION ALL">
SELECT
#{photo.id, jdbcType=VARCHAR}, #{photo.dwbzd, jdbcType=BLOB}
FROM DUAL
</foreach>
;END;