总结下MyBatisPlus中的一个注解@TableField

总结下MyBatisPlus中的一个注解@TableField

作用:

自动填充

问题场景:

在开发过程中,有多个实体类具有相同属性,这里举两个属性(createTime,updateTime),当我们更新数据库中的表时,会频繁去手动填写代码去更新。

解决方法:

第一步:

我们可以将这些属性提取出来,创建一个公共基础类BasePojo,代码如下

@Data
public abstract class BasePojo implements Serializable {
    //自动填充
    @TableField(fill = FieldFill.INSERT)
    private Date created;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updated;
}

这里@Data注解不懂的可以自行去查下,这里不解释。
@TableField注解可以帮我们解决这个手动去添加更新的问题。该注解有4个属性分别为:
DEFAULT : 默认不处理
INSERT : 插入填充字段
UPDATE : 更新填充字段
INSERT_UPDATE : 插入和更新填充字段

第二步:

既然说是自动赋值,那么自动赋值在哪里配置?
我们可以在自建的config目录下新建自动填充的处理类并实现MetaObjectHandler接口
代码如下:

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        Object created = getFieldValByName("created", metaObject);
        if (null == created){
            //字段为空,可以进行填充
            setFieldValByName("created",new Date(),metaObject);
        }
        Object updated = getFieldValByName("updated", metaObject);
        if (null == updated){
            //字段为空,可以进行填充
            setFieldValByName("updated",new Date(),metaObject);
        }
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        //更新数据时,直接更新字段
        setFieldValByName("updated",new Date(), metaObject);

    }
}

其中第一个参数:前面自动填充的所对应的字段名称
第二个参数:要自动填充的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值