Mybatis实现不存在即插入,存在即更新

在开发的过程中,常常会遇到“不存在即插入,存在即更新”的需求,虽然分成两步也可以完成上述功能,但是有一种简单方法可以一次性完成。
1,首先,在表结构中将判断字段创建唯一索引,脚本如下:
ALTER TABLE tableName ADD UNIQUE (column);

2,在mapper.xml文件中手动编写sql,模板如下:
在这里插入图片描述
注意,foreach结束标签后的字段为更新字段,因此这些字段列中不包括作为是否存在判断条件的唯一索引列。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MyBatis Plus是基于MyBatis的增强工具,可以简化MyBatis的操作和提供更多的便利性。 要实现如果存在更新,如果不存在插入的功能,可以使用MyBatis Plus提供的`saveOrUpdate`方法。 在使用`saveOrUpdate`方法时,需要先判断数据是否已经存在。可以在查询数据库时判断是否存在数据记录,或者使用MyBatis Plus提供的`exists`方法,判断数据是否已经存在。 如果数据存在,即已经存在相应的记录,就直接调用`update`方法进行更新操作。可以使用`UpdateWrapper`对象来设置更新的条件,使用`set`方法设置需要更新的字段和值。 如果数据不存在,即没有相应的记录,就调用`save`方法进行插入操作。可以直接传入实体对象进行插入操作。 示例代码如下: ```java // 实例化或注入MyBatis Plus的Mapper对象 @Autowired private MyEntityMapper myEntityMapper; // 假设要插入更新的实体对象为myEntity MyEntity myEntity = new MyEntity(); myEntity.setId(1L); myEntity.setName("John"); // 判断数据是否已经存在 boolean exist = myEntityMapper.exists(new QueryWrapper<MyEntity>().eq("id", myEntity.getId())); if (exist) { // 如果数据已存在,执行更新操作 boolean updated = myEntityMapper.update(myEntity, new UpdateWrapper<MyEntity>().eq("id", myEntity.getId())); if (updated) { System.out.println("更新成功"); } else { System.out.println("更新失败"); } } else { // 如果数据不存在,执行插入操作 boolean saved = myEntityMapper.save(myEntity); if (saved) { System.out.println("插入成功"); } else { System.out.println("插入失败"); } } ``` 以上是基于MyBatis Plus的实现思路,根据实际需求和系统架构的不同,可以有多种方式来实现该功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值