mybatis mysql:
<insert id="insertInviteList" parameterType="java.util.List">
<![CDATA[
insert into inviteTable(userId,type,inviteName,dateLine,deadLine
) values
<foreach collection="list" item="fieldItem" index="index" separator=",">
(#{fieldItem.userId},#{fieldItem.type},#{fieldItem.inviteName},unix_timestamp(),#{fieldItem.deadLine})
</foreach>
]]>
</insert>这里头批量插入数据,但是有一个问题,我想如果type和inviteName已经存在的话,就不插入新纪录该如何实现? 考虑过用组合主键,但如果组合主键的话会有一个问题,例如10条纪录中第3条插入失败,可能后面7条也会被跳过,所以问一下高手有没有办法解决?谢谢。
<insert id="insertInviteList" parameterType="java.util.List">
<![CDATA[
insert into inviteTable(userId,type,inviteName,dateLine,deadLine
) values
<foreach collection="list" item="fieldItem" index="index" separator=",">
(#{fieldItem.userId},#{fieldItem.type},#{fieldItem.inviteName},unix_timestamp(),#{fieldItem.deadLine})
</foreach>
]]>
</insert>这里头批量插入数据,但是有一个问题,我想如果type和inviteName已经存在的话,就不插入新纪录该如何实现? 考虑过用组合主键,但如果组合主键的话会有一个问题,例如10条纪录中第3条插入失败,可能后面7条也会被跳过,所以问一下高手有没有办法解决?谢谢。
是不是改成这样:<insert id="insertInviteList" parameterType="java.util.List">
<![CDATA[
insert ignore into inviteTable(userId,type,inviteName,dateLine,deadLine
) values
<foreach collection="list" item="fieldItem" index="index" separator=",">
(#{fieldItem.userId},#{fieldItem.type},#{fieldItem.inviteName},unix_timestamp(),#{fieldItem.deadLine})
</foreach>
]]>
</insert>type和inviteName加唯一索引: PRIMARY KEY (`type`,`inviteName`),
alter table tbname add unique index(type,invitename)