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

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
}

上一篇:MyBatis Plus逆向生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值