首页 > 其他分享 >MyBatisPlus公共字段自动填充

MyBatisPlus公共字段自动填充

时间:2023-07-23 13:35:01浏览次数:45  
标签:setValue metaObject 填充 公共 Long LocalDateTime MyBatisPlus

公共字段自动填充

公共字段

新增员工,修改、编辑员工信息时,都需要设置创建时间,修改时间等操作,这些操作过于重复、繁琐,为了有更快捷高效的,MyBatisPlus提供了公共字段自动填充功能,当我们执行insertupdate操作时才执行

MyBatisPLus公共字段自动填充就是在插入或者修改操作时,为指定字段赋予指定的值

优点:
	1. 同意对公共字段处理
	2. 避免重复的代码

POJO层

指定需要作为公共的字段

	@TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    @TableField(fill = FieldFill.INSERT)
    private Long createUser;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;

自定义元数据对象处理器

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    /**
     * 插入操作,自动填充
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("线程id:{}", Thread.currentThread().getId());
        log.info("公共字段自动填充, insert....");
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime", LocalDateTime.now());
        metaObject.setValue("createUser", new Long(1));
        metaObject.setValue("updateUser", new Long(1));
    }

    /**
     * 更新操作,自动填充
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("线程id:{}", Thread.currentThread().getId());
        log.info("公共字段自动填充, update....");
        metaObject.setValue("updateTime", LocalDateTime.now());
        metaObject.setValue("updateUser", new Long(1));
    }
}

标签:setValue,metaObject,填充,公共,Long,LocalDateTime,MyBatisPlus
From: https://www.cnblogs.com/bobowww/p/17574904.html

相关文章

  • mybatisPlus
    mybatisPlusmybatisplus基础:mybatisspringspringmvc为什么要学习mybatisplus?可以解决大量时间所有的CRUD代码它都可以自动化完成简介简化jdbc操作简化mybatis快速入门网站:快速开始|MyBatis-Plus(baomidou.com)使用第三方依赖导入对应的依赖研究......
  • HJ75 公共子串计算
    1.题目读题 HJ75 公共子串计算 考查点 同  HJ65 查找两个字符串a,b中的最长公共子串HJ65查找两个字符串a,b中的最长公共子串2.解法思路 代码逻辑 具体实现 自行实现publicclassHJ075{publicstaticvoidmain(String[]args){Scanne......
  • HJ65 查找两个字符串a,b中的最长公共子串
    1.题目读题 HJ65 查找两个字符串a,b中的最长公共子串 考查点 2.解法思路 代码逻辑 具体实现自行实现 publicclassHJ065{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println(dp(sc.n......
  • mybatisPlus简介
    mybatisplus简化了dao层packagecom.example.mp_01.dao;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.example.mp_01.domain.User;importorg.apache.ibatis.annotations.Mapper;@MapperpublicinterfaceUserdaoextendsBaseMapper<User>......
  • 最近公共祖先(LCA)
    向上标记法时间复杂度:$O(n)$待查询点为a和b,首先从a点向根节点进行搜索,将路径上的点进行标记,再从b点向根节点进行搜索,同时检测路径上的点是否被标记过,第一次检测到的点即为a,b两点的最近公共祖先倍增时间复杂度预处理:$O(nlog_n)$查询:$O(log_n)$相关概念及性质节点祖先:从......
  • java aspose填充数据word生成pdf
    使用AsposeJava填充数据并生成PDF作为一名经验丰富的开发者,你可以通过以下步骤教导刚入行的小白如何使用AsposeJava库来填充数据并生成PDF。下面是整个过程的流程图:步骤描述1加载Word文档模板2创建Document对象3获取Document对象的MailMerge属性4创建包......
  • Statement not bound, 使用MybatisPlus时的SqlSessionFactory和MybatisSqlSessionFact
    最近首次在真实项目中,实践用SpingBoot整合Mybatis、MybatisPlus、Spring、多数据源等常见SSH整合问题。遇到一个难题,MybatisPlus遇到了经典的问题“Statementnotbound”。如果是Mybatis,很容易解决,扫描到Mapper接口文件和Mapper.xml文件,肯定能搞定。这次整合进了MybatisPlus,之前......
  • 公共Mono模块
    作用:让没有继承Mono的类可以开启协程,可以统一管理Update的更新。-------------------------------MonoManager------------------------------------usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Events;publicclassMon......
  • MybatisPlus
    目录configMybatisPlusConfig.javapackagecom.bijian.mybatisplus.config;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.mybatisplus.extension.plugins.inner......
  • 关于 Spartacus ProdutList Component Service model$ 的填充逻辑
    源代码:这段代码是Angular中的RxJS代码,主要是创建一个名为model$的Observable对象,这个对象的生成逻辑复杂一些,主要涉及using,subscribe,pipe,shareReplay等函数的使用。逐行解释如下:readonlymodel$:Observable<ProductSearchPage>=using(这一行定义了一个......