首页 > 其他分享 >MyBatis-Plus公共字段填充

MyBatis-Plus公共字段填充

时间:2023-06-22 17:12:15浏览次数:36  
标签:setValue metaObject log 填充 Plus LocalDateTime MyBatis import

  1. 在实体类的属性上加入@TableField注解,指定自动填充的策略
    @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;
  1. 按照框架要求编写元数据对象处理器,在此类中统一为公共字段赋值,此类需要实现MetaObjectHandler接口
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;

/**
 * 自定义元数据对象处理器
 */
@Component
@Slf4j
public class MyMetaObjecthandler implements MetaObjectHandler {
    /**
     * 插入操作,自动填充
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("公共字段自动填充[insert]...");
        log.info(metaObject.toString());

        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime",LocalDateTime.now());
        metaObject.setValue("createUser",BaseContext.getCurrentId());
        metaObject.setValue("updateUser",BaseContext.getCurrentId());
    }

    /**
     * 更新操作,自动填充
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("公共字段自动填充[update]...");
        log.info(metaObject.toString());

        long id = Thread.currentThread().getId();
        log.info("线程id为:{}",id);

        metaObject.setValue("updateTime",LocalDateTime.now());
        metaObject.setValue("updateUser",BaseContext.getCurrentId());
    }
}

标签:setValue,metaObject,log,填充,Plus,LocalDateTime,MyBatis,import
From: https://www.cnblogs.com/yddwinter/p/17498008.html

相关文章

  • 荣耀6 Plus 的屏幕大小pt计算方法
    使用gomobile检测华为荣耀6Plus的屏幕大小为: 1080*1776px;  162pt*266.40pt; 每pt像素个数:6.666665个。而实际的数据是:主屏尺寸:5.5英寸; 分辨率 1920*1080像素;像素密度401ppi。实测1776,而不是1920是因为华为荣耀有一个可隐藏的按钮区,实测时按钮区......
  • Mybatis 开发使用总结2023
    Mybatis一。入门1.mybatis:是一款优秀的持久化框架,用于简化JDBC的开发。2.JDBC3.数据库连接池4.lombok二。mybatis的基础增删改查操作1.驱动:com.mysql.cj.jdbc.Driver2.url:jdbc:mysql://localhost:3306/mybatis3.user:root4.password:123三。mybatis动态sql1.创建sp......
  • day111 - mybatis中的参数问题
    mybatis中的参数问题样例:根据用户名查询用户信息mybatis中获取参数值的方式有两种#{}和${}1.若mapper接口方法的参数为单个的字面量类型UsergetUserByUsername(Stringusername); <!--UsergetUserByUsername(Stringusername);--><selectid="getUserByUsername"re......
  • Oracle19C PDB中普通用户可以通过sqlplus scott/tiger连接吗
     Oracle19CPDB中普通用户可以通过sqlplusscott/tiger连接吗 先说结论,目前我还没找到方式。研究了挺久,通过百度,通过mos上搜索,也想通过触发器来实现,发现都不行。 先说sys用户,是可以的。通过设置ORACLE_PDB_SID这个环境变量,可以实现sys直接登录后连接到指定的PDB上。[o......
  • MyBatis-Plus 实现动态字段排序
    场景虽然前端能根据返回的数组进行对字段的排序,但也仅局限于实现当前页的排序,无法满足全部数据的排序,所以需要走接口的查询进行排序,获取最全的排序数据。业务需求思路前端需传递排序的字段,该字段是正序还是倒叙。可能存在多个,所以字段为字符串数组,可以通过逗号分开。后端拿......
  • Mybatis Plus 批量插入方法效率低问题优化方案 BatchExcutor
    1、问题描述项目用的是MybatisPlus框架操作数据库,在使用batchSave批量插入方法的时候发现效率极低,插入2w数据花了6分钟,太恐怖了。看了源码发现,项目的批量插入方法调用的是MybatisPlus的BatchExcutor,用这个本意是将多次更新sql语句集合为一条更新语句,复用同一个sql连接更新数据。......
  • MyBatis入门指南
    MyBatis起源于iBatis,iBatis是ClintonBegin在2002年发起的开源项目,于2010年6月16日从Apache的网站退役,并被GoogleCode托管,改名为MyBatis。MyBatis是一个支持普通SQL查询、存储过程和高级映射的优秀的持久层框架,它消除了几乎所有的JDBC代码、对参数的手工设置以及对结果集繁琐的处......
  • Vue3 element-Plus el-tree 权限树 传值给后端及回显问题
    内容:权限在新增人员时候选择传给后端并且编辑回显坑:1.传给后端的权限数组需要传父级id例如:一级目录下有二级目录和2-2目录,选了2-2目录,需要把一级目录的id也给后端2.回显的时候后端会把权限数组id都给你(包括一级目录),如果直接回显的话会默认一级下所有目录都选中 代......
  • Docker配置SpringBoot+ShardingJDBC+MybatisPlus项目实现分库分表与读写分离
    Docker配置SpringBoot+ShardingJDBC+MybatisPlus项目实现分库分表与读写分离 分类于 实战例子本文ShardingJDBC相关知识主要参考自ShardingJDBC官方文档,更多的用法建议到官网文档查看。前言传统的业务系统都是将数据集中存储至单一数据节点的解决方案,如今随着互联网数据......
  • mybatis在mapper.xml中怎么处理大于、小于、不等于号
    第一种方法:使用转义字符大于号>>大于等于号 >= >=小于号 < < 小于等于号 <= <=与 & &amp;双引号 " "单引号 ' &apos;例子: <iftest="beginTimeStr!=null">  andfile.created_at>='${beginTimeStr}'</if>......