服务器上OracleSelectParser错误
oracle+mybatis(druid)服务器上OracleSelectParser错误,错误如下
原因是使用merge时候,服务器上数量太多,导致使用foreach批量插入时报错,解决办法就是把读取到的数据分批进行批量插入
以下是Mybatis代码
<insert id="insertPartsStockIn" parameterType="java.util.List">
merge into TM_PARTS_STOCK_IN t1
using(
<foreach collection="list" item="data" separator="UNION ALL">
SELECT
#{data.partsStockInId} partsStockInId,
#{data.stockInTime} stockInTime,
#{data.stockInQuantity} stockInQuantity,
#{data.partsId} partsId,
#{data.partsName} partsName,
#{data.supplier} supplier,
from dual
</foreach>
) a on (t1.partsStockInId = a.partsStockInId)
when matched then
update set STOCK_IN_TIME=a.stockInTime,STOCK_IN_QUANTITY=a.stockInQuantity,PARTS_ID=a.partsId,
PARTS_NAME=a.partsName,SUPPLIER=a.supplier
when not matched then
insert (<include refid="Base_Column_List" /> ) values
(a.partsStockInId,a.stockInTime,a.productType,a.batteryCode,a.stockInDate,a.recyclingServiceId,a.recyclingServiceName,a.isSubmit)
</insert>