侧边栏壁纸
  • 累计撰写 46 篇文章
  • 累计创建 38 个标签
  • 累计收到 2 条评论
隐藏侧边栏

MybatisPlus进阶(三)——自动填充

哒卟刘先生
2022-01-10 / 0 评论 / 0 点赞 / 141 阅读 / 1,918 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

mybatisPlus自动填充:如果数据表中有字段是每次查询或者修改时都要进行同一策略的变动,如创建人、创建时间、修改人、修改时间等,可以使用自动填充,简化代码

自动填充

一共两步:
1,自定义实现类 MyMetaObjectHandler继承MetaObjectHandler
示例:

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 MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        //setFieldValByName根据字段名填充对应字段值
        this.setFieldValByName("createUserId", 1, metaObject);
        this.setFieldValByName("createUserName", "admin", metaObject);
        this.setFieldValByName("createTime", new Date(), metaObject);

    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.setFieldValByName("modifyUserId", 1, metaObject);
        this.setFieldValByName("modifyUserName", "admin", metaObject);
        this.setFieldValByName("modifyTime", new Date(), metaObject);

    }
}

2,在对应的需要自动填充的javabean上添加注解@TableField(fill = FieldFill.UPDATE)
示例:

            /**
            * 创建人ID
            */
        @TableField(fill = FieldFill.INSERT,value = "createUserId")
    private Integer createUserId;

            /**
            * 创建人名称
            */
            @TableField(fill = FieldFill.INSERT,value = "createUserName")
    private String createUserName;

            /**
            * 创建时间
            */
            @TableField(fill = FieldFill.INSERT,value = "createTime")

    private LocalDateTime createTime;

            /**
            * 最后修改人ID
            */
            @TableField(fill = FieldFill.UPDATE,value = "modifyUserId")
    private Integer modifyUserId;

            /**
            * 最后修改人名称
            */
            @TableField(fill = FieldFill.UPDATE,value = "modifyUserName")
    private String modifyUserName;

            /**
            * 最后修改时间
            */
            @TableField(fill = FieldFill.UPDATE,value = "modifyTime")
    private LocalDateTime modifyTime;

备注:file的几个可选枚举值

public enum FieldFill {
    /**
     * 默认不处理
     */
    DEFAULT,
    /**
     * 插入填充字段
     */
    INSERT,
    /**
     * 更新填充字段
     */
    UPDATE,
    /**
     * 插入和更新填充字段
     */
    INSERT_UPDATE
}

上一篇:MybatisPlus进阶(二)
下一篇:MyBatis Plus逆向生成

0

评论区