自动填充时间
数据库中添加字段 create_time和update_time,用代码实现自动填充时间:
1、在实体类添加注解@TableField
2、写一个处理类继承 MetaObjectHandler。
@Component //一定不能忘了把该组件添加到IOC容器中 @Slf4j public class MyObjectHandler implements MetaObjectHandler { //插入时的填充策略 @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill..."); this.setFieldValByName("createTime", LocalDateTime.now(), metaObject); this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject); } //更新时的填充策略 @Override public void updateFill(MetaObject metaObject) { log.info("start update fill..."); this.setFieldValByName("updateTime",LocalDateTime.now(), metaObject); } }
乐观锁
乐观锁:十分乐观,它总是认为不会出现问题,无论干什么都不去上锁,如果出现问题,再次更新值测试。
悲观锁:十分悲观,它总是认为会出问题,无论干什么都会上锁,再去操作。
乐观锁实现方式
- 取出记录时,获取当前version
- 更新时,带上这个version
- 执行更新时, set version = newVersion where version = oldVersion
- 如果version不对,就更新失败
1、给数据库增加字段version
2、在实体类添加对应字段
3、添加组件
@EnableTransactionManagement @Configuration public class MybatisPlusConfig { //注册乐观锁插件 @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return interceptor; } }
4、测试,可以看到version更新了