🎀Mybatis-Plus中的MetaObjectHandler
简介
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); } } }
通过
insertFill
与updateFill
在新增/更新时进行自动填充
UserThreadLocalUtil
为ThreadLocal
,主要为存储当前线程的用户信息
结束
本文作者:丿似锦
本文链接:https://www.cnblogs.com/zktww/p/18377477
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步