Mybatis-plus神技:公共字段填充

背景

在日常开发中,我们经常需要处理一些公共字段的自动填充,例如在每次插入或更新数据时自动设置创建时间和更新时间。这些重复性的工作可以通过 MyBatis-Plus 提供的 MetaObjectHandler 接口来简化,实现公共字段的自动填充,提高开发效率并减少代码冗余。

使用方法

1. 实体类注解配置

首先,我们需要在实体类中使用 @TableField 注解标记出需要自动填充的字段,并指定对应的填充策略:

import com.baomidou.mybatisplus.annotation.*;

import java.util.Date;

@TableName("your_table")
public class YourEntity {

    @TableId
    private Long id;

    private String name;

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    // 省略 getter 和 setter 方法
}

2. 实现 MetaObjectHandler 接口

接下来,我们实现 MetaObjectHandler 接口,并定义插入和更新时字段的自动填充逻辑:

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;

public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 插入操作自动填充 createTime
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 更新操作自动填充 updateTime
    }
}

3. 配置 MyBatis-Plus

最后,在 MyBatis-Plus 的配置类中注册 MyMetaObjectHandler 实例,并配置插件:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MyMetaObjectHandler myMetaObjectHandler() {
        return new MyMetaObjectHandler();
    }

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        // 可以添加其他的拦截器
        return interceptor;
    }
}

现在,每当执行插入或更新操作时,MyBatis-Plus 会自动调用 MyMetaObjectHandler 实现的方法来填充 createTimeupdateTime 字段。

总结

MetaObjectHandler 是 MyBatis-Plus 提供的一个强大的接口,用于处理实体类公共字段的自动填充。通过实现此接口,我们可以极大地简化对于创建时间、更新时间等字段的处理逻辑,使得代码更加简洁,并且保持了一致性和可维护性。这种自动填充功能是 MyBatis-Plus 的一大特色,能够有效地提升开发效率。在实践中,我们可以根据实际的业务需求来自定义填充策略,使其更贴合项目的需求。

相关推荐

  1. Mybatis-plus公共字段填充

    2024-03-13 16:12:06       42 阅读
  2. Mybatis-plus 自动填充字段

    2024-03-13 16:12:06       29 阅读
  3. MP公共字段填充

    2024-03-13 16:12:06       21 阅读
  4. mybatis-Plus 的自动填充

    2024-03-13 16:12:06       48 阅读
  5. SpringBoot AOP应用(公共字段填充

    2024-03-13 16:12:06       57 阅读
  6. 【SpringBoot】SpringAOP实现公共字段自动填充

    2024-03-13 16:12:06       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 16:12:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 16:12:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 16:12:06       82 阅读
  4. Python语言-面向对象

    2024-03-13 16:12:06       91 阅读

热门阅读

  1. 安卓kotlin面试题 91-100

    2024-03-13 16:12:06       34 阅读
  2. 2024.03.12蓝桥云课笔记

    2024-03-13 16:12:06       43 阅读
  3. 【力扣二刷思路】DAY2

    2024-03-13 16:12:06       45 阅读