MP实现ID自增 &日志 &自动填充 & 逻辑删除 &乐观锁

默认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);
    }
}
View Code
复制代码

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();
    }


}
View Code
复制代码

测试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+"";
    }

 

posted @   磕伴  阅读(430)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-07-01 Django/SQL server 配置实现(附下载安装)
点击右上角即可分享
微信分享提示