記一次在MyBatis-Plus中 @TableField 自動填充中遇見的坑


先放一張表生成策略對應的結果

描述
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); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM