首页 > 其他分享 >Mybatis-Plus实现字段的自动填充

Mybatis-Plus实现字段的自动填充

时间:2024-08-08 15:50:53浏览次数:11  
标签:userName metaObject mybatisSqlSessionFactoryBean 字段 Plus Mybatis import public S

给字段加注解

@ApiModelProperty(value = "创建人")
@TableField(fill = FieldFill.INSERT)
private String createBy;

@ApiModelProperty(value = "修改人")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;

实现MetaObjectHandler

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.hrwms.common.base.UserEntity;
import com.hrwms.common.utils.UserContext;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

@Component
public class FillHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        String userName = UserContext.currentUserOpt().map(UserEntity::getUserName).orElse("sys");
        this.setFieldValByName("createBy", userName,metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        String userName = UserContext.currentUserOpt().map(UserEntity::getUserName).orElse("sys");
        this.setFieldValByName("updateBy", userName,metaObject);
    }
}

将创建的FillHandler类注入到配置中(重要)

@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
    MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
    //获取mybatis-plus全局配置
    GlobalConfig globalConfig = GlobalConfigUtils.defaults();
    //mybatis-plus全局配置设置元数据对象处理器为自己实现的那个
    globalConfig.setMetaObjectHandler(new FillHandler());
    mybatisSqlSessionFactoryBean.setDataSource(dataSource);
    //mybatisSqlSessionFactoryBean关联设置全局配置
    mybatisSqlSessionFactoryBean.setGlobalConfig(globalConfig);
    return mybatisSqlSessionFactoryBean.getObject();
}

说明:一般在updateById和save api才生效

参考文章1
参考文章2

标签:userName,metaObject,mybatisSqlSessionFactoryBean,字段,Plus,Mybatis,import,public,S
From: https://www.cnblogs.com/shareToAll/p/18349081

相关文章

  • Mybatis详解
    MyBatis一、MyBatis概述1.MyBatis介绍2.依赖介绍二、工程搭建1.工程依赖2.配置文件3.映射文件4.MybatisAPISqlSession直接执行SQL5.代理实例三、配置文件1.属性(properties)2.设置(settings)3.类型别名(typeAliases)4.类型处理器(typeHandlers)常见类型......
  • 4K Video Downloader Plus 中文 授权版
    4KVideoDownloader是一款专门为帮助您从不同的视频网站下载高清视频的软件工具(极速下载站提供),该应用程序为用户提供了将视频保存到FLV,MP4,MKV或3GP的可能性。它拥有直观,整洁的布局,允许用户随时随地执行多项操作。您可以将URL直接粘贴到主面板中,并根据其流类型选择视频质量。此......
  • 4K Video Downloader Plus 中文 授权版
    4KVideoDownloader是一款专门为帮助您从不同的视频网站下载高清视频的软件工具(极速下载站提供),该应用程序为用户提供了将视频保存到FLV,MP4,MKV或3GP的可能性。它拥有直观,整洁的布局,允许用户随时随地执行多项操作。您可以将URL直接粘贴到主面板中,并根据其流类型选择视频质量。此......
  • sqlserver修改字段
    SETQUOTED_IDENTIFIERON;SETANSI_NULLSON;GOCREATEPROCEDUREp_AlterColumn@TableNameVARCHAR(50),@ColumnNameVARCHAR(50),@ColumnTypeVARCHAR(50),--ModifyFlag='1000'ColumnType='NULL'表示删除@ColumnIsNullVARCHA......
  • USB 同步字段中高速同步字段和低速全速同步字段的区别
    USB(UniversalSerialBus)有几种不同的传输模式:低速(Low-Speed)、全速(Full-Speed)、高速(High-Speed)和超级速度(SuperSpeed)。同步字段(SyncField)是USB协议中的一部分,用于同步接收端的时钟,以便正确地接收数据。以下是高速同步字段和低速/全速同步字段的区别:低速和全速同步字段:-传......
  • MyBatis-Plus 条件构造器
    MyBatis-Plus条件构造器        MyBatis-Plus的条件构造器(Wrapper)是MyBatis-Plus提供的一个非常强大的功能,它允许你以链式调用的方式构建复杂的SQL查询条件,而无需手写繁琐的XML映射文件或注解。主要特点链式调用:通过链式调用的方式构建查询条件,代码可读性高......
  • com.alibaba.fastjson 将object装jsonObject两次字段顺序会出现不一致
    Objectentity=params.get("entity");JSONObjectjsonObject=(JSONObject)JSONObject.toJSON(entity);//遍历JSONObjectfor(Map.Entry<String,Object>entry:jsonObject.entrySet())以上代码,在同一个object,两次经过的到时候,遍历J......
  • 帝国CMS中两个关联字段查询结果不一致
    1.检查数据完整性确保关联字段中没有空值或不完整的数据。确认关联表的字段类型和长度是否一致。检查关联表的唯一标识符字段是否具有唯一值。2.修复数据不一致手动更新关联字段中的空值或不完整数据。使用SQL查询语句更新或删除有问题的记录。考虑使用数据清理工具修......
  • 基于Vue2+ElementUI/Vue3+ElementPlus对el-notification增加倒计时进度条特效,鼠标移入
    遇到一个需求就是对这个el-notification加一个倒计时进度条,方便用户知道该通知何时自动关闭。一、示例代码(1)基于Vue2+ElementUI的项目<template><div><el-button@click="showTip">doit</el-button></div></template><script>exportdefault{......
  • 设计一位字段结构存储下面信息。 字体ID:0~255之间的一个数 字体大小:0~127之间的一个数
    /设计一位字段结构存储下面信息。字体ID:0~255之间的一个数字体大小:0~127之间的一个数对齐:0~2之间的一个数表示左对齐,居中,右对齐加粗:开(1)或闭(0)斜体:开(1)或闭(0)在程序中使用该结构来打印字体参数,并使用循环菜单来让用户改变参数。例如,该程序的一个运行示例如下:IDSIZEALIGNMEN......