ORA-01790: 表达式必须具有与对应表达式相同的数据类型

在这里插入图片描述
mapper

void insertBatch(@Param("inventoryAuthHisList") List<InventoryAuthHis> inventoryAuthHisList);

xml

    <insert id="insertBatch">
        insert into T_INVENTORY_AUTH_HIS (HIS_OPER_ID, HIS_OPER_DATE, HIS_OPER_TYPE, AUTH_ID, INVENTORY_ID, USER_ID, AUTH_TYPE, AREA_ID)
        <foreach collection="inventoryAuthHisList" item="item" open="(" separator=" union all " close=")">
            select #{item.hisOperId}, #{item.hisOperDate}, #{item.hisOperType}, #{item.authId}, #{item.inventoryId}, #{item.userId}, #{item.authType}, #{item.areaId} from dual
        </foreach>
    </insert>

上面的批量插入报错
在执行SQL时MyBatis会自动通过对象中的属性给SQL中参数赋值,它会自动将Java类型转换成数据库的类型。
而一旦传入的是null它就无法准确判断这个类型应该是什么,就有可能将类型转换错误,从而报错。
jdbcType了解一下啊,参考jdbcType网址

MybatisJdbcTypeOracleMySql
JdbcTypeARRAY
JdbcTypeBIGINTBIGINT
JdbcTypeBINARY
JdbcTypeBITBIT
JdbcTypeBLOBBLOBBLOB
JdbcTypeBOOLEAN
JdbcTypeCHARCHARCHAR
JdbcTypeCLOBCLOBCLOB
JdbcTypeCURSOR
JdbcTypeDATEDATEDATE
JdbcTypeDECIMALDECIMALDECIMAL
JdbcTypeDOUBLENUMBERDOUBLE
JdbcTypeFLOATFLOATFLOAT
JdbcTypeINTEGERINTEGERINTEGER
JdbcTypeLONGVARBINARY
JdbcTypeLONGVARCHARLONGVARCHAR
JdbcTypeNCHARNCHAR
JdbcTypeNCLOBNCLOB
JdbcTypeNULL
JdbcTypeNUMERICNUMERIC/NUMBERNUMERIC
JdbcTypeNVARCHAR
JdbcTypeOTHER
JdbcTypeREALREALREAL
JdbcTypeSMALLINTSMALLINTSMALLINT
JdbcTypeSTRUCT
JdbcTypeTIMETIME
JdbcTypeTIMESTAMPTIMESTAMPTIMESTAMP/DATETIME
JdbcTypeTINYINTTINYINT
JdbcTypeUNDEFINED
JdbcTypeVARBINARY
JdbcTypeVARCHARVARCHARVARCHAR

因此修改一下xml
看数据表字段类型改
在这里插入图片描述

    <insert id="insertBatch">
        insert into T_INVENTORY_AUTH_HIS (HIS_OPER_ID, HIS_OPER_DATE, HIS_OPER_TYPE, AUTH_ID, INVENTORY_ID, USER_ID, AUTH_TYPE, AREA_ID)
        <foreach collection="inventoryAuthHisList" item="item" open="(" separator=" union all " close=")">
            select #{item.hisOperId}, #{item.hisOperDate}, #{item.hisOperType}, #{item.authId}, #{item.inventoryId}, #{item.userId}, #{item.authType}, #{item.areaId,jdbcType=DOUBLE} from dual
        </foreach>
    </insert>
  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值