自动填充
就是createTime一类的,在修改或者添加的时候自动修改数据
FieldFill
注解:
1
| @TableField(fill = FieldFill.INSERT)
|
1 2 3 4 5 6 7 8 9 10 11 12
| package com.baomidou.mybatisplus.annotation;
public enum FieldFill { DEFAULT, INSERT, UPDATE, INSERT_UPDATE;
private FieldFill() { } }
|
注释处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package com.saxon.mybatis_plus.hander;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component;
import java.time.LocalDate; import java.util.Date; @Component @Slf4j public class MyMybatishandle implements MetaObjectHandler { @Override public void insertFill (MetaObject metaObject) { log.info ("enter ...."); this.strictInsertFill (metaObject,"createTime", Date.class,new Date ()); }
@Override public void updateFill (MetaObject metaObject) { this.strictUpdateFill (metaObject,"ModifyTime", Date.class,new Date ());
} }
|
乐观锁插件
使用代码:
添加插件也是这个办法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package com.saxon.mybatis_plus.config;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration @EnableTransactionManagement public class MybatisPlusConfig { @Bean public OptimisticLockerInterceptor getOptimisticLockerInterceptor () { return new OptimisticLockerInterceptor (); } }
|
注解:
1 2
| @Version private Integer version;
|
当然你的字段里面也要有这个字段;
工作原理:它会在每一次执行更新操作的时候,就会把版本号取出来+1,如果现在的版本号=原来的版本号+1就修改,否则修改失败,多线程可能出现修改同一个数据,所以加了这个两个都无法修改数据,保证了数据的安全,无法修改,在数据库里面相应的字段也会被修改,你可以通过version查看修改的次数