0 0

mybatis调用mysql存储过程,inout参数为空无法解决20

<parameterMap type="java.util.Map" id="InsertBillMap">
		<parameter property="P_StoreID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_FormTypeID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_RelatedFID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_RequestFID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_ContractNumber" jdbcType="VARCHAR" javaType="String" mode="IN" />
		<parameter property="P_ClientID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_WarehouseID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_WarehouseID2" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_CreatorID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_SalesID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_NoTaxSum" jdbcType="DOUBLE" javaType="double" mode="IN" />
		<parameter property="P_TaxSum" jdbcType="DOUBLE" javaType="double" mode="IN" />
		<parameter property="P_NoTaxPaidSum" jdbcType="DOUBLE" javaType="double" mode="IN" />
		<parameter property="P_TaxPaidSum" jdbcType="DOUBLE" javaType="double" mode="IN" />
		<parameter property="P_PayMethod" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_PayValue" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_FirstPayDate" jdbcType="DATE" javaType="String" mode="IN" />
		<parameter property="P_Status" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_Status2" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_Notes" jdbcType="VARCHAR" javaType="String" mode="IN" />
		<parameter property="P_Notes2" jdbcType="VARCHAR" javaType="String" mode="IN" />
		<parameter property="P_Notes3" jdbcType="VARCHAR" javaType="String" mode="IN" />
		<parameter property="P_ReviewerID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_SystemDate" jdbcType="DATE" javaType="String" mode="IN" />
		<parameter property="P_Invoice" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_Used" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_FPayDate" jdbcType="DATE" javaType="String" mode="IN" />
		<parameter property="P_bReverse" jdbcType="INTEGER" javaType="Integer" mode="IN" />
		<parameter property="P_VipID" jdbcType="BIGINT" javaType="Long" mode="IN" />
		<parameter property="P_FID" jdbcType="BIGINT" javaType="Long" mode="INOUT" />
		<parameter property="P_FormNumber" jdbcType="BIGINT" javaType="Long" mode="INOUT" />
		<parameter property="P_ret" jdbcType="VARCHAR" javaType="String" mode="OUT" />
	</parameterMap>

	<select id="callzc_proc_sp_InsertBill" parameterMap="InsertBillMap" statementType="CALLABLE">

	    <![CDATA[
         {call zc_proc_sp_InsertBill(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
    	]]>
	</select>

	BEGIN...	
              IF ISNULL(P_FormNumber) THEN...
        SELECT @@aa into P_FormNumber;
              ELSE.....



这里一运行代码,问题来了,因为clientID是inout的类型的,in进去是有值的,完全没问题,可以运行,当是空值进去的时候,就报错了!
出现一下报错
### Error querying database.  Cause: java.sql.SQLException: Incorrect integer value: 'null' for column 'P_FormNumber' at row 1
### The error may involve zc.saas.store.fee.dao.ZCFeeSaleBillMapper.ReverseBillMapWithoutNumber
### The error occurred while setting parameters
### Cause: java.sql.SQLException: Incorrect integer value: 'null' for column 'P_FormNumber' at row 1



经过几天讨论,感觉是mybatis装配的时候,把null当成“null”,求大神解决啊





问题补充:P_FormNumber是inout的类型的,in进去是有值的,完全没问题,可以运行,当是空值进去的时候,就报错了!
2013年12月06日 17:20
  • 大小: 319.1 KB

1个答案 按时间排序 按投票排序

0 0

只能看业务逻辑,integer能否默认一个值

2013年12月06日 21:00

相关推荐

Global site tag (gtag.js) - Google Analytics