在项目中引入Mybaits-Plus后,首先需要在application.yml增加如下注解(可以节省后面很多操作):
mybatis-plus:
configuration:
## 实体下划线
map-underscore-to-camel-case: true
# 日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
然后进行全部MP配置(此处我用了hutool工具和sa-token开源框架,可以自行修改):
@Configuration
public class MybatisPlusConfig {
@Bean
IdentifierGenerator identifierGenerator() {
return entity -> IdUtil.getSnowflakeNextId();
}
@Bean
MetaObjectHandler metaObjectHandler() {
return new MetaObjectHandler() {
@Override
public void insertFill(MetaObject metaObject) {
setFieldValByName("createBy", StpUtil.isLogin() ? StpUtil.getLoginIdAsLong() : 0L, metaObject);
setFieldValByName("createDate", DateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
setFieldValByName("lastModifiedBy", StpUtil.isLogin() ? StpUtil.getLoginIdAsLong() : 0L, metaObject);
setFieldValByName("lastModifiedDate", DateTime.now(), metaObject);
}
};
}
@Bean
MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 乐观锁插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
在实体类编写时,如用@version注解时,需要提前给赋初始值,如0;