java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MybatisPlus自动填充字段

MybatisPlus自动填充字段的操作

作者:小憨憨的牛

文章介绍了使用MyBatis-Plus的`@TableField`注解和`MetaObjectHandler`接口实现数据库表中自动填充时间、用户信息等字段的功能,通过创建一个填充类来实现插入和更新操作时的自动填充

以自动填充时间为例

一般公司项目每个表都会有create_time,update_time,create_userCode,create_userName等字段,用来记录数据的基本信息。

mybatis-plus的TableField注解就很好的实现了这个功能,不需要每次存数据的时候给这几个字段赋值,而是自动填充。

1.数据库字段

2.实体类对应字段

 //增加实现
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private Date createTime;

    //增加或修改实现
    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

@TableField注解

3.创建填充类 MyMetaObjectHandler

该类要实现MetaObjectHandler接口,并实现两个方法,一个记录保存操作,一个记录修改操作,在这两个方法里进行数据的填充。

/**
 * @Author dhp
 * @create 2025-02-24 15:35
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        //根据名字设置属性值
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

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

4.测试保存操作

  @Test
    void contextLoads() {

        User user = new User();
        user.setUserCode("123");
        user.setUserName("张三");
        user.setAddress("山东潍坊");
        user.setAge(25);
        //不进行手动赋值
//        user.setCreateTime(new Date());
//        user.setUpdateTime(new Date());
        userService.save(user);
    }

5.结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文