访问大字段是一件不可避免的事情,文档,图片等等。
ibatis.net操作大字段,如果该字段不为空,插入值是是正常的。当该条记录的大字段为空值时,就会报“给byte[]赋空值会提示:操作数类型冲突: nvarchar 与 image 不兼容 如何给空值插入到image字段”的错误。那么这个时候就要调整一下map了。
之前的map的insert是这样写的:
<insert id="InsertBIDAttachmentFile" parameterClass="BIDAttachmentFile">
INSERT INTO [dbo].[BID_AttachmentFile] (
[AttachmentID]
, [AttachmentName]
, [Description]
, [AttachmentFileContent]
) VALUES (
#AttachmentID#
, #AttachmentName#
, #Description#
, #AttachmentFileContent#)
</insert>
这里不能将参数以类的(parameterClass="BIDAttachmentFile")形式传入,而是要单独写一个parameterMaps来传参数,并且将Insert的value全部改成“?”符号。修改的map为:
<parameterMaps>
<parameterMap id="insertBIDAttachmentFile" class="BIDAttachmentFile">
<parameter property="AttachmentID" column="AttachmentID" dbType="VarChar" />
<parameter property="AttachmentName" column="AttachmentName" dbType="NVarChar" />
<parameter property="Description" column="Description" dbType="NVarChar" />
<parameter property="AttachmentFileContent" column="AttachmentFileContent" dbType="Image" />
</parameterMap>
<insert id="InsertBIDAttachmentFile" parameterMap="insertBIDAttachmentFile">
INSERT INTO [dbo].[BID_AttachmentFile] (
[AttachmentID]
, [AttachmentName]
, [Description]
, [AttachmentFileContent]
) VALUES (
?,?,?,?
)
</insert>