简介

MetaObjectHandler 是一个非常有用的组件,用于处理实体对象中的字段填充逻辑,比如自动填充创建时间、更新时间、创建人、修改人等字段。

组件介绍

MetaObjectHandler 接口允许在不修改业务代码的情况下,对实体类中的字段进行自动填充。这通常用于记录创建时间、更新时间、创建人、修改人等元数据信息。例如,在用户注册时自动设置创建时间,在更新用户信息时自动更新最后修改时间。

此处实现自动填充创建人、修改人

创建时间、修改时间等交给MySQL进行自动填充

使用

  • 实现 MetaObjectHandler 接口:

    首先需要创建一个类实现 MetaObjectHandler 接口,并重写其中的方法。
package com.zk.app.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.zk.app.utils.UserThreadLocalUtil;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component; /**
* @program: ZK
* @description: 自定义mubatisplust填充
* @author: zk
* @create: 2024-07-17 11:30
**/
@Component
public class ZKMetaObjectHandler implements MetaObjectHandler {
/**
* 创建人字段
*/
private static final String CREATE_USER_ID = "createUserId";
/**
* 修改人字段
*/
private static final String UPDATE_USER_ID = "updateUserId"; @Override
public void insertFill(MetaObject metaObject) {
this.setUserId(metaObject, true);
} @Override
public void updateFill(MetaObject metaObject) {
this.setUserId(metaObject, false);
} private void setUserId(MetaObject metaObject, boolean isInsert) {
Long userId = UserThreadLocalUtil.getUserId();
if (userId > 0) {
if (isInsert) {
this.setFieldValByName(CREATE_USER_ID, userId, metaObject);
}
this.setFieldValByName(UPDATE_USER_ID, userId, metaObject);
}
}
}

通过insertFillupdateFill在新增/更新时进行自动填充

UserThreadLocalUtilThreadLocal,主要为存储当前线程的用户信息


结束

🎀Mybatis-Plus中的MetaObjectHandler的更多相关文章

  1. Mybatis框架中实现双向一对多关系映射

    学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...

  2. 详解Java的MyBatis框架中SQL语句映射部分的编写

    这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...

  3. 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    [转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...

  4. SpringBoot Mybatis项目中的多数据源支持

    1.概述 有时项目里里需要抽取不同系统中的数据源,需要访问不同的数据库,本文介绍在Springboot+Mybatis项目中如何支持多数据源操作. 有需要的同学可以下载 示例代码 项目结构如下: 2. ...

  5. MyBatis Generator中文文档

    MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://mbg.cndocs.tk/ 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看 ...

  6. Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突

    原文链接:http://www.cnblogs.com/xdp-gacl/p/4264301.html     http://www.cnblogs.com/xdp-gacl/p/4264425.ht ...

  7. SpringMVC+MyBatis开发中指定callSettersOnNulls,可解决返回字段不全的问题

    Spring+MyBatis开发过程中,在xxMapper.xml配置文件进行select查询时resultType="map",如果要查询的字段是空值,在返回的map中会出现找不 ...

  8. MyBatis配置文件中的标签mappers的子标签mapper的url属性

    在浏览器中输入file:/可以打开访达根目录,file:后面至少跟一个杠 MyBatis配置文件中的标签mappers的子标签mapper的url属性中file:后面至少要跟两个杠

  9. mybatis框架中XxxxMaper.xml的文件

    我们知道在mybatis框架中,config.xml中会关联到许多的XxxxMapper的xml文件,这些文件又对应着一个个的接口,来观察下这些xml文件 从以下这个文件为例子: <?xml v ...

  10. Mybatis 学习过程中出现空指针异常的错误【已解决】

    Mybatis 学习过程中出现空指针异常的错误[已解决] 以下是写的小测试的代码 bean层 Player类(篮球队队员) bean层 Team类(篮球队) dao层 TeamDao.xml配置文件 ...

随机推荐

  1. 巧用 CSS 实现高频出现的复杂怪状按钮 - 镂空的内凹圆角边框

    在之前,我们有些过这么一篇文章 - 使用 CSS 轻松实现高频出现的各类奇形怪状按钮. 里面包含了如下这些图形: 你可以在这里看到:CodePen Demo -- CSS Various Button ...

  2. 本地部署最强人工智能服务:方案(一)Chatbox+硅基流动(满血DeepSeek R1)

    最近DeepSeek的服务器经常出现服务器繁忙,而且本地运行大模型很吃力,我的960m挺吃力的.不过华为后续和硅基流动一起搭建起了DeepSeek的API服务,注册就送14块钱,换算下来 4块/M t ...

  3. 硬件设计:POE--POE受电设备(PD)电路工作原理

    参考资料:解决POE PD设计挑战的有效的解决方案 POE电源模块的介绍特性和芯片的详细资料概述 如何应对PoE受电设备设计挑战 以太网供电中受电设备的芯片设计与研究 以太网供电检测和分级接口电路设计 ...

  4. Yarn角色

    一.ResourceManager ResourceManager中的调度器负责资源的分配 二.NodeManager NodeManager则负责资源的供给和隔离 ResourceManager将某 ...

  5. Hive explain执行计划详解

    简介:HIVE提供了EXPLAIN命令来展示一个查询的执行计划,这个执行计划对于我们了解底层原理,hive 调优,排查数据倾斜等很有帮助 一.EXPLAIN 参数介绍 语法 : EXPLAIN [EX ...

  6. 管理虚拟机(virtual-manager)

  7. Python 合并 Excel 单元格

    合并 Excel 单元格是 Excel 数据处理和表格设计中的一项常用操作.例如,在制作表格标题时,经常会将多个单元格合并,使标题能够跨列显示,更加醒目和美观.此外,当对数据进行分类时,为了使同一类别 ...

  8. 本地部署Grok2.0

    Grok-beta2.0(通过ChatBox实现) 个人使用: 1.注册登录 官方地址https://x.ai/ 2.创建API密钥 地址https://console.x.ai/ 3.登录githu ...

  9. 使用XManager远程连接服务器的时候使用Qt键盘会错位偏移

    问题 最近使用XManager访问服务器的xfce桌面,在使用Qt查看代码的时候发现键盘会错位 如下图,我输入application,最终显示这个 这样子就根本无法进行开发了 然后在网上找,发现有人出 ...

  10. FANUC发那科机器人维护保养与故障处理分析

    发那科机器人维护保养与故障处理分析 掌握知识:掌握发那科机器人维护保养与故障处理分析 每台机器人都需要预防性保养,这样可以保证它们在生产线上保持最佳性能和实现一致性,当机器人没有进行定期的预防性保养检 ...