1:数据库使用oracle时,Mybatis的批量插入语句如下:
<insert id="insert" parameterType="java.util.List">
insert into PERSONAL_MESSAGE_SET
(PERSONAL_MESSAGE_SET_ID,
ACCOUNT_ID,
MODULE_CODE,
RECEIVE_TIME_AFTER,
STATE_REMIND_LAUNCH,
STATE_REMIND_FOLLOW,
UNIT)
<if test="personalMessageSets != null">
<foreach collection="personalMessageSets" item="personalMessageSet" index="index" separator="UNION ALL">
(SELECT #{personalMessageSet.personalMessageSetId},
#{personalMessageSet.accountId},
#{personalMessageSet.moduleCode},
#{personalMessageSet.receiveTimeAfter},
#{personalMessageSet.stateRemindLaunch},
#{personalMessageSet.stateRemindFollow},
#{personalMessageSet.unit} FROM DUAL)
</foreach>
</if>
</insert>
其中 personalMessageSets是Mapper接口传入的一个List集合(注意:该插入语句中没有values)。
2:数据库使用MySQL的时候,Mybatis的批量插入语句如下:
<insert id="insert" parameterType="java.util.List">
insert into PERSONAL_MESSAGE_SET
(PERSONAL_MESSAGE_SET_ID,
ACCOUNT_ID,
MODULE_CODE,
RECEIVE_TIME_AFTER,
STATE_REMIND_LAUNCH,
STATE_REMIND_FOLLOW,
UNIT)
values
<if test="personalMessageSets != null">
<foreach collection="personalMessageSets" item="personalMessageSet" index="index" separator=",">
( #{personalMessageSet.personalMessageSetId},
#{personalMessageSet.accountId},
#{personalMessageSet.moduleCode},
#{personalMessageSet.receiveTimeAfter},
#{personalMessageSet.stateRemindLaunch},
#{personalMessageSet.stateRemindFollow},
#{personalMessageSet.unit})
</foreach>
</if>
</insert>
其中
personalMessageSets是Mapper接口传入的一个List集合(注意:该插入语句中有values)。