自动填充

就是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查看修改的次数