当前位置: 首页 > article >正文

mybatis_plus自动填充字段,统一填充创建时间、更新时间创建人更新人等

实体

@TableField(fill = FieldFill.INSERT)
private String createByName;
@TableField(fill = FieldFill.UPDATE)
private String updateBy;

填充类

package com.talents.application.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.talents.application.entity.dto.Account;
import com.talents.application.service.AccountService;
import com.talents.application.utils.SpringUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 自动填充处理类
 *
 **/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {


    @Override
    public void insertFill(MetaObject metaObject)
    {
        String userId = "system";
        String userName = "system";
        User user = null;
        try
        {
            user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

        } catch (Exception e)
        {

        }

        if (user != null)
        {
            AccountService accountService = SpringUtils.getBean(AccountService.class);
            Account account = accountService.findAccountByJobNumber(user.getUsername());
            if (account != null)
            {
                userId = account.getId();
                userName = account.getName();
            }
        }
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("createBy", userId, metaObject);
        this.setFieldValByName("createByName", userName, metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject)
    {
        String userId = "system";
        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (user != null)
        {
            AccountService accountService = SpringUtils.getBean(AccountService.class);
            Account account = accountService.findAccountByJobNumber(user.getUsername());
            if (account != null)
            {
                userId = account.getId();
            }
        }
        this.setFieldValByName("updateTime", new Date(), metaObject);
        this.setFieldValByName("updateBy", userId, metaObject);
    }
}

http://www.kler.cn/a/405982.html

相关文章:

  • wsl安装
  • ChatGPT 与其他 AI 技术在短视频营销中的技术应用与协同策略
  • 飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
  • vue2 src_消息订阅和发布(pubsub-js)
  • ara::com 与 AUTOSAR 元模型的关系总结
  • SpringCloud多机部署,负载均衡-LoadBalance
  • 环形缓冲区 之 STM32 串口接收的实现
  • @WebService 详解
  • Redis五大基本类型——Zset有序集合命令详解(命令用法详解+思维导图详解)
  • 学习笔记|MaxKB对接本地大模型时,选择Ollma还是vLLM?
  • js中new操作符具体都干了什么?
  • 为自动驾驶提供高分辨率卫星图像数据,实例级标注数据集OpenSatMap
  • 如何实现单片机的安全启动和安全固件更新
  • 达索系统亮相第三十一届中国汽车工程学会年会暨展览会
  • 【已完成】windows配置pytorch2.4.1深度学习环境
  • 商用密码应用安全性评估,密评整体方案,密评管理测评要求和指南,运维文档,软件项目安全设计相关文档合集(Word原件)
  • 玩转合宙Luat教程 基础篇④——程序基础(库、线程、定时器和订阅/发布)
  • c++ std::stack总结
  • 深入理解 prompt提示词 原理及使用技巧
  • ElasticSearch7.x入门教程之中文分词器 IK(二)
  • Python操作neo4j库py2neo使用之创建和查询(二)
  • ubuntu pytorch容器内安装gpu版本的ffmpeg
  • android studio无法下载,Could not GET xxx, Received status code 400
  • C++设计模式介绍
  • Bug:引入Feign后触发了2次、4次ContextRefreshedEvent
  • IDEA 下载源码很慢,Download Source使用阿里云镜像仓库