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 @ 2022-07-01 16:14  磕伴  阅读(469)  评论(0)    收藏  举报