MyBatis Plus 提供了 insertOrUpdate 方法来实现插入或更新操作,可以在实体类中给需要进行唯一约束的字段添加 @TableField 注解,并设置 updateStrategyFieldStrategy.IGNORED,表示在更新时忽略该字段的值。

示例代码如下:

@Data
@TableName("user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    
    private String name;
    
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String email;
    
    // getter/setter 略
}

在进行插入或更新操作时,可以使用 saveOrUpdate 方法,如果实体类中存在主键,则会根据主键值判断是插入新纪录还是更新已有记录;如果不存在主键,则会根据唯一约束进行判断,如果插入的记录违反唯一约束,则会更新已有记录,否则插入新纪录。

示例代码如下:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    
    public void saveOrUpdateUser(User user) {
        userMapper.saveOrUpdate(user);
    }
}
``
mybatis plus 实现insertOrUpdate记录违反唯一约束时更新否则插入新纪录

原文地址: http://www.cveoy.top/t/topic/hcH7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录