使用iBatis的时候,插入数据的时候,当对象的某个属性值为空值的时候,会报错(错误不统一(将截断字符串或二进制数据、))。
解决途径:
INSERT INTO TMCS_ORPUDO (
POLICY_NO,STATUS,INSURED_BEGIN_DATE,RISK_CODE,PAY_MODE,
PAY_YEARS,YEARS,APPLY_CODE,PAY_TO_DATE,MODE_PREMIUM,
BASE_PREMIUM,SUNDRY_AMOUNT,INPUT_DATE,
CHANNEL_CODE,CHANNEL_CODE2,CHANNEL_CODE3,CHANNEL_CODE4,SPONSOR_CODE,CITY_CODE,REVISIT_FLAG,REVISIT_DATE,
CAMPAIGN_CODE,ORDER_NO,PACKAGE_CODE,PACKAGE_NAME,SIGN_DATE,IS_V_TYPE,
APPLY_NAME,AGENT_CODE,BANK_STAFF_CODE,OPERATE_STATUS,BATCH_NO,BATCH_NO_TOLOCATE,CREATE_BY,CREATE_DATE
)
VALUES
(
#policyNo:VARCHAR#,
#status:VARCHAR#,
#insuredBeginDate:DATE#,
#riskCode:VARCHAR#,
#payMode#,
#payYears#,
#years#,
#applyCode:VARCHAR#,
#payToDate:DATE#,
#modePremium#,
#basePremium#,
#sundryAmount#,
#inputDate:DATE#,
#channelCode:VARCHAR#,
#channelCode2:VARCHAR#,
#channelCode3:VARCHAR#,
#channelCode4:VARCHAR#,
#sponsorCode:VARCHAR#,
#cityCode:VARCHAR#,
#revisitFlag:VARCHAR#,
#revisitDate:DATE#,
#campaignCode:VARCHAR#,
#orderNo:VARCHAR#,
#packageCode:VARCHAR#,
#packageName:VARCHAR#,
#signDate:DATE#,
#isVtype:VARCHAR#,
#applyName:VARCHAR#,
#agentCode:VARCHAR#,
#bankStaffCode:VARCHAR#,
'0',
#batchNo:VARCHAR#,CONVERT(varchar(100), GETDATE(), 112),'system',GETDATE()
)
在对象的属性的后面加上对应的数据类型。
结果有多个这样的插入数据,导致大量重复的工作量,并且以后维护起来相当复杂。
后面在网上找,发现对于myBatis3的可以在myBatis配置增加<setting>属性 jdbcTypeForNull="OTHER" ,但是对于iBatis2并没有设置这个属性。
记下来防止忘记。
参考文档点击打开链接