1. 程式人生 > >解決Oracle+Mybatis批量插入報錯:SQL 命令未正確結束

解決Oracle+Mybatis批量插入報錯:SQL 命令未正確結束

每次 rom list ins 配置文件 解決 報錯 文件 什麽

Mybatis批量插入需要foreach元素。foreach元素有以下主要屬性:

(1)item:集合中每一個元素進行叠代時的別名。

(2)index:指定一個名字,用於表示在叠代過程中,每次叠代到的位置。

(3)collection:根據傳入的參數值確定。

(4)open:表示該語句以什麽開始。

(5)separator:表示在每次進行叠代之間以什麽符號作為分隔 符。

(6)close:表示以什麽結束。

首先,錯誤的xml配置文件如下:

<insert id="save" databaseId="oracle">
insert into "sys_user_role"
(
"user_id",
"role_id"
)values
<foreach collection="roleIdList" item="item" index="index" separator="," >
(
#{userId},
#{item}
)
</foreach>
</insert>

如果如上這樣寫就會報錯:SQL 命令未正確結束。

經過修改後正確的xml配置文件如下:

<insert id="save" databaseId="oracle">
insert into "sys_user_role"
(
"user_id",
"role_id"
)
<foreach collection="roleIdList" item="item" index="index" separator="UNION ALL" >
SELECT
#{userId},
#{item}
FROM dual
</foreach>
</insert>

根據上下配置文件,需要註意三個地方:

(1)需要取掉values

(2)separator屬性值改為UNION ALL。因為在oracle中用insert into xxx values (xxx,xxx),(xxx,xxx) 這種語法是通不過的

(3)foreach標簽中需要取掉括號,加入select ..from dual.

解決Oracle+Mybatis批量插入報錯:SQL 命令未正確結束