默认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+"";
}

MP实现ID自增 &日志 &自动填充 & 逻辑删除 &乐观锁的更多相关文章

  1. 【转载】mysql binlog日志自动清理及手动删除

    说明:当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间.mysql-bin.000001mysql-bin.000002mysql-b ...

  2. mysql binlog日志自动清理及手动删除

    说明:当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间.mysql-bin.000001mysql-bin.000002mysql-b ...

  3. 【mybatis-plus】主键id生成、字段自动填充

    一.主键id的生成 数据库表里通常都会有一个主键id,来作为这条数据的唯一标识. 常见的方式 数据库自动增长 这种很常见了,可以做到全库唯一.因为id是天然排序的,对于涉及到排序的操作会很方便. UU ...

  4. mybatis plus 增删改自动填充字段值

    说明 本文实现以下需求效果 创建数据时自动填充 createUserId 和 createTime 更新数据时自动填充 updateUserId 和 updateTime(每次修改都自动填充新的 up ...

  5. MP(MyBatis-Plus)的自动填充功能

    什么是自动填充 有些表中会有更新时间.创建时间.更新人或者创建人这些字段. 每次对数据进行新增.删除.修改时都需要对这些字段进行设置.传统的做法是在进行这些操作前,对Entity的字段进行set设置, ...

  6. 项目集成seata和mybatis-plus冲突问题解决方案:(分页插件失效, 自动填充失效, 自己注入的id生成器失效 找不到mapper文件解决方案)

    项目集成seata和mybatis-plus,seata与mybatis-plus冲突问题(所有插件失效,自动填充失效,找不到mapper文件解决方案) 自动填充代码: package com.fro ...

  7. MP的自动填充功能

    用来进行自动填充时间. 使用注解@TableTield(fill=FieldFill.insert)插入时进行性填充 使用注解@TableTield(fill=FieldFill.Update)更新时 ...

  8. SpringBoot-Mybatis_Plus学习记录之公共字段自动填充

    一.应用场景 平时在建对象表的时候都会有最后修改时间,最后修改人这两个字段,对于这些大部分表都有的字段,每次在新增和修改的时候都要考虑到这几个字段有没有传进去,很麻烦.mybatisPlus有一个很好 ...

  9. 双主双写、只备份某些表且要在建表ID自增

    先展示下最终实现的配置 主1的配置(重要的,其他略) log-bin = mysql-bin #必须要有binlog auto_increment_offset = 1 #自增ID的初始值 auto_ ...

  10. MybatisPlus自动填充公共字段的策略

    背景:数据库中多个表有时间字段,并且字段名一致 需求:该时间字段由MybatisPlus自动插入和更新,业务代码无需处理 方法: 一.创建基础实体[BaseEntity],定义需要处理的公共字段(创建 ...

随机推荐

  1. 苹果新一代“超级芯片”曝光:M3 Ultra最高可达32核CPU

    近日,据外媒消息,苹果计划在2024年推出新一代"超级芯片"M3 Ultra. 据悉,M3 Ultra将大幅增加CPU核心数量,同时GPU核心数量也将适度增加. 具体来说,M3 U ...

  2. PicGo + Gitee 实现 Markdown 图床

    最近再研究图床,注册的阿里云域名备案还在审批,所以七牛云图床暂时没用,所以试下用PicGo+ Gitee PicGo - 基于 electron-vue 开发的图床工具 PicGo目前支持了微博图床, ...

  3. docker之redis集群部署

    docker之redis集群部署 PART01: 3主3从redis集群部署 3主3从redis集群配置 关闭防火墙,启动docker服务 如果报以下错误,应该是docker 服务没有启动,可以执行下 ...

  4. 洛谷P1308统计单词数,strtok函数的使用以及对于单词分割的一些思考

    [NOIP2011 普及组] 统计单词数 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能 ...

  5. 案例:记录一则强制开库遭遇ORA-16433的处理过程

    客户的一套开发环境,大概了解到的背景是清理空间时redo被运维人员当作log误删除,一线同事先接手处理,过程中遇到问题升级到我这里继续分析. 接手后,数据库处于mount状态,之前恢复过程中已经做过r ...

  6. 如何修改OSW图表中显示的主机名称

    本次测试的OSW版本:831 有人可能会说这种需求是吃饱了撑的吗,谁没事儿改这个名称干嘛啊? 其实并不是,因为有些生产案例非常典型,分享讲解时也需要配合OSW的趋势图来展示,但是出于保护客户隐私(哪怕 ...

  7. select * 的使用说明

    一. SELECT * 的含义 select * 语句是从指定的表中按照顺序返回所有列. 二. SELECT * 的优缺点 1  优点 在实际开发过程中,大家习惯性地使用select *  from  ...

  8. CF1795

    A 先判断初始行不行,再模拟加入. B 题意:数轴上给定一些线段,和点 \(t\).问能否删去一些线段,使得 \(t\) 变成唯一的覆盖次数最多的点. 差分 + 贪心. C 有 \(n\) 杯水,\( ...

  9. HASHTEAM香山杯2023WP

    目录 前言 misc 签到题 web PHP_unserialize_pro Re URL从哪儿来 hello python pwn Move pwthon 附上c-python调试方法 crypto ...

  10. JOISC 2023 纪录

    记录一下 JOISC 2023 的做题记录 Day1 T1 Two Currencies 给定一棵树,在边上有总计 \(m\) 个检查站,经过一个检查站需要叫 \(1\) 枚金币或者若干枚银币.\(Q ...