使用MyBatis MetaObjectHandler 自动填充时间字段

本文介绍了如何使用MyBatis的MetaObjectHandler来自动填充创建时间和更新时间字段,包括新建配置类、为表对象字段添加注解,并提供了问题排查的几点建议。
摘要由CSDN通过智能技术生成

第一步:新建

MyMeatObjectHandler类,实现MeatObjectHandler
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;

import java.time.LocalDateTime;

/**
 * @description: mybatis 字段自动填充
 * @author: dw.zhou
 * @create: 2021-06-22 16:32
 * @Version 1.0
 **/
public class MyMeatObjectHandler implements MetaObjectHandler {


    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }
}

第二步:新建MybatisPlusConfig配置类,注入MyMeatObjectHandler(也可通

如果您在MyBatis中注入了`MetaObjectHandler`实例,但发现它并没有起作用,可能是由于以下原因导致的: 1. 配置问题:请确保在MyBatis的配置文件(如`mybatis-config.xml`)中正确配置了`MetaObjectHandler`。例如,使用`configuration`元素配置`MetaObjectHandler`: ```xml <configuration> <metaObjectHandler type="com.example.MyMetaObjectHandler"/> </configuration> ``` 这里的`com.example.MyMetaObjectHandler`是您自己实现的`MetaObjectHandler`类的完整路径。 2. 注入问题:如果您使用Spring来管理MyBatis的配置和实例,确保在Spring配置文件中正确注入了`MetaObjectHandler`。例如,在Java配置类中使用`@Bean`注解注入: ```java @Bean public MetaObjectHandler myMetaObjectHandler() { return new MyMetaObjectHandler(); } ``` 或者在XML配置文件中使用`<bean>`元素注入: ```xml <bean id="myMetaObjectHandler" class="com.example.MyMetaObjectHandler"/> ``` 3. 字段注解问题:确保您的实体类字段上正确注解了需要自动填充字段。例如,在字段使用`@TableField`注解来标识需要自动填充字段: ```java @TableField(fill = FieldFill.INSERT) private Date createTime; ``` 请注意,`MetaObjectHandler`是基于MyBatis-Plus的功能,并且需要与MyBatis-Plus的版本兼容。确保您使用的是最新版本的MyBatis-Plus,并按照其文档正确配置和使用`MetaObjectHandler`。 如果您仍然遇到问题,请检查日志文件以获取更多详细的错误信息,以帮助确定问题的根本原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值