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>

/////

原文地址:https://www.cnblogs.com/mustanglqt/p/10594211.html

时间: 2024-10-28 19:09:41

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

oracle 插入数据前判断表中是否存储重复数据

有时候用oracle的数据库,插入数据的时候需要判断一下该条数据是否已经存在. 我们的第一思路如下,首先执行下面这个sql: select count(*) isExists from t_test_lll: 然后判断isExists等于0与否,如果等于0,则执行insert. 上面这样写,也可以,但是多写很多代码,不利于后期维护. 其实oracle可以内置在insert语句中进行判断,如下sql: insert when (not exists (select 1 from t_test_ll

杏彩平台出租mysql存储过程之遍历多表记录后插入第三方表中

自从学过存储过程后杏彩平台出租(www.1159880099.com )QQ1159880099,就再也没有碰过存储过程,这是毕业后写的第一个存储过程. 因为项目里设备的种类比较多,分别存在不同的数据表中,java中对应不同的java bean对象,想要统一管理有点困难.最近正好要开发一个功能模块,就是需要统一对设备进行处理,想着为了以后都能方便的统一处理各种设备,就从现在开始设计一套方案管理起这些项目吧. 如何统一管理呢? 如果从项目一开始设计的时候就能考虑到项目会发展成今天这样,当初就应该抽

判断表中是否存在记录的SQL语句

判断表中是否存在记录,我们惯常使用的语句是: select COUNT(*) from tableName where conditions 如果只是判断记录是否存在,而不需要获取实际表中的记录数,网上还有一种推荐做法: if exists (select * from tableName where conditions) select '1' else select '0' 通过返回值去判断是否存在. 据推荐,第二种方法效率高些,但使用profiler工具分析 通过where条件过滤出100

MySQL 处理重复数据:防止表中出现重复数据、统计、过滤、删除重复数据

MySQL 处理重复数据 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据. 防止表中出现重复数据 你可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性. 让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录. CREATE TABLE person_tbl

SQL将一个表中的某一列值全部插入到另一个表中

1.  SQL将一个表中的某一列值全部插入到另一个表中 插入的话: insert into a(col) select col from b; 更新的话: update a set col=select col from b where a.id=b.id; 判断表是否存在数据库中,存在就删除 if exists (select * from Sysobjects where name='temp') begin drop table temp end

通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中  先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数

SQL Server 判断表中是否存在某字段

原文:SQL Server 判断表中是否存在某字段 功能:判断表中是否存在某字段,若不存在,则新增该字段 语句: IF NOT EXIST (SELECT 1 FROM [DATABASE].SYS.SYSCOLUMNS WHERE ID=OBJECT_ID([DATABASE].[SCHEMA].[TABLENAME]) AND NAME='COLUMN_NAME') ALTER TABLE [TABLENAME] ADD [COLUMN_NAME] [COLUMN_TYPE] p.s. 之前

Sql_Server中如何判断表中某列是否存在

/*判断表AA中是否存在AA_ID这一列,如果不存在,则新增*/ IF NOT EXISTS (SELECT 1 FROM syscolumns INNER JOIN sysobjects ON sysobjects.id = syscolumns.id WHERE syscolumns.name = 'AA_ID' AND sysobjects.name = 'AA') ALTER TABLE AA ADD AA_ID VARCHAR(30) NULL GO Sql_Server中如何判断表中

hive-hbase-handler方式导入hive表数据到hbase表中

Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler.jar工具类 : hive-hbase-handler.jar在hive的lib包中而不是在hbase的lib中,hive0.6版本以后: 创建hive表的同时创建hbase表,删除 hive表的同时也会删除对应的hbase表. 参见官方文档:https://cwiki.apache.org/confluence/display/Hive/HBaseIntegr