mybatis-plus SQL注入器on duplicate key 示例
时间: 2024-11-22 21:42:30 浏览: 30
MyBatis-Plus 的官方示例(mybatis-plus-samples-master.zip)
5星 · 资源好评率100%
MyBatis-Plus中的SQL注入器`@OnDuplicateKey`主要用于处理插入操作时如果遇到主键冲突的情况。它提供了一种策略来应对这种场景,比如更新已有记录,而不是简单地抛出异常。下面是一个基本的示例:
```java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import org.apache.ibatis.annotations.OnDuplicateKey;
public interface UserMapper {
@Insert("INSERT INTO user (name, email) VALUES (:name, :email)")
default void insertUser(@Param("name") String name, @Param("email") String email,
@OnDuplicateKey(column = "id", updateColumns = {"password"}, upsert = true)
@OptimisticLockerInnerInterceptor.OptimisticLockVersion("version")) {
// 执行插入操作,如果id已存在则更新密码并设置乐观锁版本
}
IPage<User> findUsers(IPage空略);
}
```
在这个例子中,当尝试插入一条新的用户记录,如果发现`id`已经存在,就会使用`updateColumns`指定的列(这里是`password`)进行更新,并利用`upsert = true`开启 UPSERT 操作(即如果主键冲突就更新,而非只插入新记录)。同时,通过`@OptimisticLockerInnerInterceptor.OptimisticLockVersion`设置了乐观锁版本字段。
阅读全文