mybatis plus实现如果存在就更新,如果不存在则插入
时间: 2023-09-05 13:01:12 浏览: 1158
Mybatis 中的insertOrUpdate操作
5星 · 资源好评率100%
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的实现思路,根据实际需求和系统架构的不同,可以有多种方式来实现该功能。
阅读全文