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+""; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-07-01 Django/SQL server 配置实现(附下载安装)