MP实现ID自增 &日志 &自动填充 & 逻辑删除 &乐观锁
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
此时的依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
自动填充
1.加入注释
@TableField(fill = FieldFill.INSERT_UPDATE) private Date submitTime;
2.配置自动填充
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; @Component //作为组件进入工程 public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("submitTime",new Date(),metaObject); // this.setFieldValByName("update_time",new Date(),metaObject); // System.out.println(new Date()); // this.setFieldValByName("version",1,metaObject); this.setFieldValByName("deleted",0,metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("submitTime",new Date(),metaObject); } }
3.需要注意(类型匹配)
若数据库类型为tinyint ,则自动生成的就是 private Boolean deleted; 需要进行相关的调整,或者是赋值为true/false 或者是类型变成Integer
逻辑删除
1.添加逻辑删除相关的列
ALTER TABLE `user` ADD COLUMN `deleted` boolean
2.属性添加,并且加上对应的注释@TableLogic
@ApiModelProperty(value = "1删除 0未删除") @TableLogic @TableField(fill = FieldFill.INSERT_UPDATE) private Boolean deleted;
3.加上逻辑删除插件
@Configuration @EnableTransactionManagement @MapperScan("com.ljm.mapper") public class MyBatisPlusConfig { /** * 逻辑删除插件 */ @Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); } /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
测试OK
默认规则:1已删除 ,0未删除 (初始状态) 若是需要改的话可以配置下面的
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
乐观锁

1.添加字段
ALTER TABLE `user` ADD COLUMN `version` INT
2.属性添加注解
@Version @TableField(fill = FieldFill.INSERT) private Integer version;
3.新增时自动赋值
@Override public void insertFill(MetaObject metaObject) { ... this.setFieldValByName("version",1,metaObject); }
4.在 MybatisPlusConfig 中注册 Bean
/**
* 乐观锁插件
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
5.测试(主要注意,使用乐观锁,必须先查询出来,再修改)
@RequestMapping("/editWorkOrder")
public String editWorkOrder(WorkOrder workOrder){
WorkOrder workOrder01 = workOrderMapper.selectById(workOrder.getId());
workOrder01.setExecutor(workOrder.getExecutor());
workOrder01.setAdvise(workOrder.getAdvise());
int i = workOrderMapper.updateById(workOrder01);
return i+"";
}

浙公网安备 33010602011771号