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>

/////


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM