记一次在MyBatis-Plus中 @TableField 自动填充中遇见的坑

2023-03-08,,

先放一张表生成策略对应的结果

描述
DEFAULT 默认不处理
INSERT 插入时填充字段
UPDATE 更新时填充字段
INSERT_UPDATE 插入和更新时填充字段

此处需要注意一下,如果MyBatisPlus中有一些公共字段例如修改时间,创建时间,乐观锁等等

创建是采用INSERT方案

修改时采用UPDATE

在修改时注意,使用MyBatis-Plus的update方法,传入QueryWrapper或者直接传null

用updateById会出现策略不生效的情况

贴上实现生成策略接口的代码

package com.mengxiangnongfu.project.configure.mybatisplus.tools;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.mengxiangnongfu.project.util.TimeHelper;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component; /**
* 自动填充处理类
* mybatis-plus 3.3版本以上 使用注解的方式
* https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89450006?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
*
* @author Yang
* @version 1.0
* @see
**/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler { @Override
public void insertFill(MetaObject metaObject) {
      //version是字段名 第二个参数是填充的数据
this.setFieldValByName("version", new Long(0), metaObject);
this.setFieldValByName("createTime", TimeHelper.getCurrentTime14(), metaObject);
this.setFieldValByName("updateTime", TimeHelper.getCurrentTime14(), metaObject);
} @Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", TimeHelper.getCurrentTime14(), metaObject);
}
}

记一次在MyBatis-Plus中 @TableField 自动填充中遇见的坑的相关教程结束。

《记一次在MyBatis-Plus中 @TableField 自动填充中遇见的坑.doc》

下载本文的Word格式文档,以方便收藏与打印。