mybatis 多条数据插入,判断表中是否含有将插入的数据,插入没有的数据。

Posted mustanglqt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 多条数据插入,判断表中是否含有将插入的数据,插入没有的数据。相关的知识,希望对你有一定的参考价值。

多条数据,需要条件筛选之后插入到数据表:

<insert id="insertExpectCardLabelInfo" parameterType="java.util.List">
//插入表字段 

 INSERT INTO expect_know_label (
    expect_know_label_id,
    user_id,
    expect_know_label_data_id,
    del_flag,
    create_time,
    create_user,
    update_time,
    update_user)


//满足条件的数据表 重命名 
  select
    expect_know_label_id,
    user_id,
    expect_know_label_data_id,
    del_flag,
    create_time,
    create_user,
    update_time,
    update_user
  from (

//满足条件的数据,传入集合bean,遍历数据

<foreach collection="list" item="item" index="index" separator="UNION ALL">
  select
    #{item.expectId:VARCHAR} as expect_know_label_id,
    #{item.userId:VARCHAR} as user_id,
    #{item.expectDataId:VARCHAR} as expect_know_label_data_id,
    0 as del_flag,
    now() as create_time,
    #{item.userId:VARCHAR} as create_user,
    now() as update_time,
    #{item.userId:VARCHAR} as update_user
  from dual
</foreach>
  ) A

//根据需求筛选出需要的数据

 

where A.user_id=#{userId:VARCHAR} and A.del_flag=0
and A.expect_know_label_data_id not in
(select expect_know_label_data_id from expect_know_label where user_id=#{userId:VARCHAR} and del_flag=0)

</insert>

//数据插入成功。

如何只是需要插入数据,而不对数据进行筛选的,可以直接进行<foreach>遍历,例如

select 
    expect_know_label_id,
    user_id,
    expect_know_label_data_id,
    del_flag,
    create_time,
    create_user,
    update_time,
    update_user

<foreach collection="list" item="item" index="index" separator="UNION ALL">
    #{item.expectId:VARCHAR},
    #{item.userId:VARCHAR},
    #{item.expectDataId:VARCHAR},
    0,
    now(),
    #{item.userId:VARCHAR},
    now(),
    #{item.userId:VARCHAR} 
</foreach>

/////

以上是关于mybatis 多条数据插入,判断表中是否含有将插入的数据,插入没有的数据。的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis--动态插入多条数据

30-4 向表中插入多条记录

JAVA中,向MYSQL插入多条数据,如何判断如果某记录已经存在就不插入

使用while循环在表中插入多条记录[关闭]

怎么向informix数据库表中一次插入多条记录

判断Table表中是否含有某一列