当前位置: 代码网 > it编程>编程语言>Java > Mybatis-plus配置之日期时间自动填充实践

Mybatis-plus配置之日期时间自动填充实践

2025年08月11日 Java 我要评论
一、前言在业务开发时——每次数据更新或新增时都需要特意得去修改时间,总是进行这种繁琐的操作,给很多后端开发人员造成了很大得困扰。这一期我们就帮大家解决掉这个问题,mybatis

一、前言

在业务开发时——每次数据更新或新增时都需要特意得去修改时间,总是进行这种繁琐的操作,给很多后端开发人员造成了很大得困扰。

这一期我们就帮大家解决掉这个问题,mybatis-plus 提供了非常便捷的方式来实现这一功能,通过使用其内置的 metaobjecthandler 接口,实现新增日期和更改日期的快速填充,以此解放广大码农朋友的双手。

二、导入依赖

 <!-- 内置mybatis-plus插件依赖 -->
    <dependency>
       <groupid>com.baomidou</groupid>
       <artifactid>mybatis-plus-boot-starter</artifactid>
       <version>3.4.2</version>
     </dependency>
     <!-- mysql -->
      <dependency>
         <groupid>mysql</groupid>
         <artifactid>mysql-connector-java</artifactid>
         <version>8.0.11</version>
       </dependency>

三、构造抽象类

后续所有的实体类,都可以继承这个基础的实体类,以提高代码的复用性

在需要自动创建更新的属性上,加上@tablefield注解

public abstract class basepojo {
    //文件创建,自动填充。需要实现metaobjecthandle接口,进行处理
    @tablefield(fill = fieldfill.insert)
    private date created;
    //文件更新,自动填充
    @tablefield(fill = fieldfill.insert_update)
    private date updated;
}

四、实现metaobjecthandle接口

package com.tanhua.sso.handler;

import com.baomidou.mybatisplus.core.handlers.metaobjecthandler;
import org.apache.ibatis.reflection.metaobject;
import org.springframework.stereotype.component;

import java.util.date;

@component
public class mymetaobjecthandler implements metaobjecthandler {

    @override
    public void insertfill(metaobject metaobject) {
        // 使用严格模式插入填充,如果字段为null则进行填充
        this.strictinsertfill(metaobject, "created", date.class, new date()); // 创建时间
        this.strictinsertfill(metaobject, "updated", date.class, new date()); // 更新时间
    }

    @override
    public void updatefill(metaobject metaobject) {
        // 使用严格模式更新填充,总是设置更新时间
        this.strictupdatefill(metaobject, "updated", date.class, new date());
    }
}

五、版本兼容性问题

若业务中mybatis-plus版本较低,可能不含strict方法,可以采用以下写法

package com.tanhua.sso.handler;

import com.baomidou.mybatisplus.core.handlers.metaobjecthandler;
import org.apache.ibatis.reflection.metaobject;
import org.springframework.stereotype.component;

import java.util.date;

@component
public class mymetaobjecthandler implements metaobjecthandler {
    @override
    public void insertfill(metaobject metaobject) {
        //字段为空,自动填充字段
        object created = getfieldvalbyname("created", metaobject);
        if(null==created){
            setfieldvalbyname("created",new date(),metaobject);
        }
        object updated = getfieldvalbyname("updated", metaobject);
        if(null==updated){
            setfieldvalbyname("updated",new date(),metaobject);
        }
    }

    @override
    public void updatefill(metaobject metaobject) {
        //更新数据时,更新字段
        setfieldvalbyname("updated",new date(),metaobject);
    }
}

六、总结

至此,自动填充功能,圆满实现。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com