mybatisPlus使用之时间自动填充

本文介绍了如何在Spring Boot项目中使用MybatisPlus实现时间字段的自动填充,包括在POJO类上添加注解、编写处理类、配置mapperScan扫描器以及编写测试用例进行验证。

1.在pojo类上给时间写注解

 @TableField(fill= FieldFill.INSERT)
    private Date createTime;
    @TableField(fill= FieldFill.INSERT_UPDATE)
    private Date updateTime;
@TableId(type=IdType.AUTO)  //这里根据雪花算法给id设置自增选项
    private Integer id;

2.写个处理类 内部有对时间增加和修改的方法。

package com.xc.handler;

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.util.Date;

@Slf4j
@Component  //将处理类放入容器中
public class MyHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill....");
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill....");
        this.setFieldValByName("updateTime",new Date(),metaObject);

    }
}

3.别忘了加mapperScan扫描器


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.xc.mapper")
@SpringBootApplication
public class MybatisplusApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisplusApplication.class, args);
    }

}

4.在测试类里面写测试即可。

### MyBatis Plus 中配置时间字段自动填充 #### 实现自动填充时间字段 为了实现时间字段自动填充,在实体类中的相应属性上需添加 `@TableField` 注解并指定其 `fill` 属性。对于创建时间和更新时间这两个常见场景,可以分别设置为 `INSERT` 和 `UPDATE` 或者统一设为 `INSERT_UPDATE` 来满足不同需求[^1]。 ```java import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; public class User { @TableField(fill = FieldFill.INSERT) private Date createTime; // 创建时间 @TableField(fill = FieldFill.UPDATE) private Date updateTime; // 更新时间 } ``` #### 定义处理器来完成实际的填充逻辑 除了标记哪些字段应该被自动填充外,还需要定义具体的处理程序以便于在适当的候给这些字段赋值。这通常涉及到自定义 MetaObjectHandler 接口的具体实现类,并重写其中的方法以提供具体的行为[^2]。 ```java import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import java.util.Date; @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); this.strictInsertFill(metaObject, "updateTime", Date.class, new Date()); } @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); } } ``` 上述代码展示了如何通过继承 `MetaObjectHandler` 并覆盖相应的插入(`insertFill`)和更新(`updateFill`)方法来进行时间戳的自动化管理。每当有新的记录加入数据库或是已有条目得到修改,都会触发这里设定的操作从而确保相关联的时间信息能够及刷新。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值