Mybatis插入

这篇博客探讨了在Mybatis中如何处理插入数据时的重复问题。第一部分介绍了如何在插入时添加判断条件,避免插入重复字段,并提供了相关资源。第二部分详细讲解了MySQL特有的ON DUPLICATE KEY UPDATE语法和REPLACE INTO语句的使用,这两种方法可以在检测到重复数据时更新或替换原有数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、插入不重复字段

传递参数:mybatis 传递参数的7种方法 - 苍青浪 - 博客园

增加判断条件:MyBatis中使用添加判断进行查询 - lszan - 博客园

详解:mybatis —— 动态sql之if条件判断各种使用方式 - sumlen - 博客园

依赖

<dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>3.0.3</version>
</dependency>

对应关系

gt>
gte>=
lt< (直接使用会报错)
lte<= (直接使用会报错)
eq==
neq!=

例1:

 <if test='id != null and id gt 28'></if>

二、插入重复字段

1、ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE为Mysql特有语法

用法

 <insert id="addCimiss">
         insert into cultivate.data_cimiss_hour(Station_ID_C, Datetime, PRE_1h, TEM)
         values
         <foreach item="item" collection="list" separator=",">
             <if test="item.TEM lt 9000">
                 (#{item.Station_ID_C},#{item.Datetime},#{item.PRE_1h},#{item.TEM})
             </if>
             <if test="item.TEM gt 9000">
                 (#{item.Station_ID_C},#{item.Datetime},#{item.PRE_1h},0)
             </if>
         </foreach>
         ON DUPLICATE KEY UPDATE
         Station_ID_C = VALUES(Station_ID_C),
         Datetime = VALUES(Datetime)
 </insert>

2、replace into

replace into 首先尝试插入数据到表中,

  • 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。

  • 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引。否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值