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

mapper

java 复制代码
void insertBatch(@Param("inventoryAuthHisList") List<InventoryAuthHis> inventoryAuthHisList);

xml

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网址

Mybatis JdbcType Oracle MySql
JdbcType ARRAY
JdbcType BIGINT BIGINT
JdbcType BINARY
JdbcType BIT BIT
JdbcType BLOB BLOB BLOB
JdbcType BOOLEAN
JdbcType CHAR CHAR CHAR
JdbcType CLOB CLOB CLOB
JdbcType CURSOR
JdbcType DATE DATE DATE
JdbcType DECIMAL DECIMAL DECIMAL
JdbcType DOUBLE NUMBER DOUBLE
JdbcType FLOAT FLOAT FLOAT
JdbcType INTEGER INTEGER INTEGER
JdbcType LONGVARBINARY
JdbcType LONGVARCHAR LONG VARCHAR
JdbcType NCHAR NCHAR
JdbcType NCLOB NCLOB
JdbcType NULL
JdbcType NUMERIC NUMERIC/NUMBER NUMERIC
JdbcType NVARCHAR
JdbcType OTHER
JdbcType REAL REAL REAL
JdbcType SMALLINT SMALLINT SMALLINT
JdbcType STRUCT
JdbcType TIME TIME
JdbcType TIMESTAMP TIMESTAMP TIMESTAMP/DATETIME
JdbcType TINYINT TINYINT
JdbcType UNDEFINED
JdbcType VARBINARY
JdbcType VARCHAR VARCHAR VARCHAR

因此修改一下xml

看数据表字段类型改

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>
相关推荐
Fanche4043 小时前
SQL 语句基础(增删改查)
运维·数据库·sql·mysql·web安全·oracle
betazhou17 小时前
基于Windows通过nginx代理访问Oracle数据库
数据库·nginx·oracle·代理
风中飘爻17 小时前
MySQL入门:数据表的创建
数据库·mysql·oracle
影子tec19 小时前
thinkphp6 + oracle 数据库连接 表名、字段名大小写和字符集
数据库·oracle·php
其实你热情似火19 小时前
Java基础第20天-JDBC
java·数据库·oracle
脑子慢且灵20 小时前
MySQL:存储函数和存储过程
数据库·mysql·oracle·存储过程·存储函数
嘉嘉king21 小时前
数据库的基本概念
数据库·mysql·oracle
leegong2311121 小时前
数据库ocp证书是什么水平
数据库·oracle
Arbori_262151 天前
Oracle REGEXP_SUBSTR
数据库·oracle
solihawk1 天前
国产数据库与Oracle数据库事务差异分析
数据库·oracle