互联网技术社区|福缘小草|程序员技术博客
🏠首页
  • 开发必备
  • Java
  • Spring Boot
  • MyBatis
  • C#
  • 架构
  • 算法
  • Vue
  • JavaScript
  • HTML
  • MySQL
  • Oracle
  • SQL Server
  • PostgreSQL
  • Redis
  • MongoDB
  • ElasticSearch
  • influxDB
  • ClickHouse
  • Linux
  • Docker
  • K8s
  • 消息队列
  • Shell
  • Git
  • Nginx
  • IDEA
  • Windows
  • 安卓
  • 在线工具
  • 实用技巧
  • 开源项目
  • 好文
  • 资源
  • 网站
  • 导航
💖关于
  • 分类
  • 标签
  • 归档

baohua.yin

不会填坑的程序员不是一个好程序猿!
🏠首页
  • 开发必备
  • Java
  • Spring Boot
  • MyBatis
  • C#
  • 架构
  • 算法
  • Vue
  • JavaScript
  • HTML
  • MySQL
  • Oracle
  • SQL Server
  • PostgreSQL
  • Redis
  • MongoDB
  • ElasticSearch
  • influxDB
  • ClickHouse
  • Linux
  • Docker
  • K8s
  • 消息队列
  • Shell
  • Git
  • Nginx
  • IDEA
  • Windows
  • 安卓
  • 在线工具
  • 实用技巧
  • 开源项目
  • 好文
  • 资源
  • 网站
  • 导航
💖关于
  • 分类
  • 标签
  • 归档
  • MyBatis是如何解析if判断的
  • MyBatis-Plus修改空值,把字段修改成空
  • MyBatis-Plus新增修改实现自动填充指定字段
    • Mybatis-Plus QueryWrapper and or 连用并且分页
    • Mybatis-Plus实现自定义通用方法
    • MyBatis
    baohua.yin
    2023-03-17
    目录

    MyBatis-Plus新增修改实现自动填充指定字段

    # 1. 需要修改的字段在模型类上添加 @TableField(fill = FieldFill.xxx) 注解。

    • FieldFill的选项:
     package com.baomidou.mybatisplus.annotation;
    
    /**
    * 字段填充策略枚举类
    *
    * <p>
    * 判断注入的 insert 和 update 的 sql 脚本是否在对应情况下忽略掉字段的 if 标签生成
    * <if test="...">......</if>
    * 判断优先级比 {@link FieldStrategy} 高
    * </p>
    *
    * @author hubin
    * @since 2017-06-27
    */
    public enum FieldFill {
       /**
        * 默认不处理
        */
       DEFAULT,
       /**
        * 插入时填充字段
        */
       INSERT,
       /**
        * 更新时填充字段
        */
       UPDATE,
       /**
        * 插入和更新时填充字段
        */
       INSERT_UPDATE
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32

    哪个字段在什么时候填充需要手动设置注解

      /**
        * 更新者
        */
      @TableField(fill = FieldFill.UPDATE)
      private String updateBy;
    
    1
    2
    3
    4
    5

    # 2. 新建一个MetaObjectHandler的实现类MyMetaObjectHandler

        package com.demo.mp.config;
        
        import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
        import org.apache.ibatis.reflection.MetaObject;
        import org.springframework.stereotype.Component;
        
        import java.util.Objects;
        
        @Component // 注入bean
        public class MyMetaObjectHandler implements MetaObjectHandler {
        
          /**
           * @Description: 新增时填充
           *
           * @auther: baohua.yin
           * @date: 2021/11/2 2:26 下午
           */
          @Override
          public void insertFill(MetaObject metaObject) {
        
            // this.setFieldValByName(字段名, 内容, metaObject:用这个对象进行填充用的,称为元数据对象);
        
            this.setFieldValByName("createBy", "admin", metaObject);
        
            // ================setFieldValByName 方法内的内容,有兴趣可以进去看一看,中文注释的==================================================
            /// **
            // * 通用填充
            // *
            // * @param fieldName  java bean property name
            // * @param fieldVal   java bean property value
            // * @param metaObject meta object parameter
            // */
            // default MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject
            // metaObject) {
            //  if (Objects.nonNull(fieldVal) && metaObject.hasSetter(fieldName)) {
            //    metaObject.setValue(fieldName, fieldVal);
            //  }
            //  return this;
            // }
          }
        
          /**
           * * @Description: 更新时填充
           *
           * @auther: baohua.yin
           * @date: 2021/11/2 2:26 下午
           */
          @Override
          public void updateFill(MetaObject metaObject) {
            this.setFieldValByName("updateBy", "admin", metaObject);
          }
        }
        
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    • 完成之后就可以使用了

    注意: 当你设置了逻辑删除,在逻辑删除的时候,是不会进行修改填充的,这个需要注意一下。

    上次更新: 2023/03/17, 16:17:59
    MyBatis-Plus修改空值,把字段修改成空
    Mybatis-Plus QueryWrapper and or 连用并且分页

    ← MyBatis-Plus修改空值,把字段修改成空 Mybatis-Plus QueryWrapper and or 连用并且分页→

    最近更新
    01
    如何进行科学上网
    05-31
    02
    分享(一个外地女孩,死在了我出租的公寓)
    08-18
    03
    温家宝总理—《我的母亲》
    06-13
    更多文章>
    Copyright © 2019-2025 1024fuli.com | 本站所有资源收集整理于网络,如有侵权请发邮件联系删除。| 粤ICP备18082936号-1 | 由又拍云提供CDN支持
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式