mybatisplus中设置乐观锁,首先需要在表结构中添加一个字段表示乐观锁,之后再domain中对应的字段中添加上注解@Version,之后需要添加乐观锁的拦截器,然后在测试方法中进行测试

发布时间 2023-09-10 22:10:15作者: 努力是一种常态

2023-09-10

version字段表示乐观锁

 在表结构中添加一个字段表示乐观锁

package com.hh.domain;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;

/**
 * @author hh
 * @version 1.0
 * @DATE 2023-09-10 21:34:29
 */
@Data
@TableName(value = "tbl_user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String phone;

    @TableLogic(value = "0",delval = "1")
    private Integer deleted;
    @Version
    private Integer version;

}

MpConfig

package com.hh.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author hh
 * @version 1.0
 * @DATE 2023-09-10 18:07:25
 */
@Configuration
public class MpConfig {

    @Bean
    public MybatisPlusInterceptor mpInterceptor(){
        MybatisPlusInterceptor mp = new MybatisPlusInterceptor();
        mp.addInnerInterceptor(new PaginationInnerInterceptor());
        mp.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mp;
    }
}

TestUser

package com.hh.dao;

import com.hh.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * @author hh
 * @version 1.0
 * @DATE 2023-09-10 21:41:44
 */
@SpringBootTest
public class TestUser {
    @Autowired
    private UserDao userDao;

   //方式一
    @Test
    public void testUpdate(){
        User user = new User();
        user.setId(1L);
        user.setName("wahaha");
        user.setVersion(1);
        userDao.updateById(user);
    }
   //方式二
    @Test
    public void testUpdate2(){
        User user = userDao.selectById(1l);
        user.setName("wawawa");
        userDao.updateById(user);
    }
}