MP实现自动填充
1修改表字段
在User表中添加datetime类型的新的字段 create_time、update_time
2、增加实体字段
(1)增加字段
private Date createTime;
private Date updateTime;
(2)添加注解
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
3、添加控制器
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @description: TODO
* @author MIS
* @date 2022/7/30 11:46
* @version 1.0
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("gmtCreate",new Date(),metaObject);
this.setFieldValByName("gmtModified",new Date(),metaObject);
this.setFieldValByName("version",1L,metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified",new Date(),metaObject);
}
}
1.乐观锁多个线程访问不拦截,更新操作时会更新版本号,其他进行更新时,版本号不一样操作失败,例如redis等非关系型数据库
2.悲观锁直接锁住,其他线程阻塞,例如mysql
(3)添加乐观锁注解
@ApiModelProperty(value = "乐观锁")
@Version
private Integer version;
(4)添加插件
@Configuration
@EnableTransactionManagement
@MapperScan("com.atguigu.eduservice.mapper")
public class MyBatisPlusConfig {
/**
* 逻辑删除插件
*/
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
/**
* 乐观锁插件
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
}