欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

MyBatisPlus中使用 @TableField完成字段自动填充

发布时间:2025/3/19 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MyBatisPlus中使用 @TableField完成字段自动填充 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

场景

官方文档:

字段注解 @TableField

  • com.baomidou.mybatisplus.annotations.TableField

 

值描述
value字段值(驼峰命名方式,该值可无)
update预处理 set 字段自定义注入
condition预处理 WHERE 实体条件自定义运算规则
el详看注释说明
exist是否为数据库表字段( 默认 true 存在,false 不存在 )
strategy字段验证 ( 默认 非 null 判断,查看 com.baomidou.mybatisplus.enums.FieldStrategy )
fill字段填充标记 ( FieldFill, 配合自动填充使用 )

 

  • 字段填充策略 FieldFill

 

值描述
DEFAULT默认不处理
INSERT插入填充字段
UPDATE更新填充字段
INSERT_UPDATE插入和更新填充字段

实现

实体类中有如下属性,通过上面的自动填充属性,我们可以实现

在进行插入操作时对

添加了注解@TableField(fill = FieldFill.INSERT)

的字段进行自动填充。

对添加了注解@TableField(fill = FieldFill.INSERT_UPDATE)

的字段在进行插入和更新时进行自动填充。

 /*** 创建人*/@TableField(fill = FieldFill.INSERT)private Long creatorId;/*** 创建时间*/@TableField(fill = FieldFill.INSERT)private Date gmtCreat;/*** 修改人*/@TableField(fill = FieldFill.INSERT_UPDATE)private Long modifierId;/*** 修改时间*/@TableField(fill = FieldFill.INSERT_UPDATE)private Date gmtModified;/*** 是否可用*/@TableField(fill = FieldFill.INSERT)private Boolean availableFlag;

这样我们在具体业务中对实体类进行赋值就可以不用对这些公共字段进行赋值,在执行插入或者更新时就能自动赋值并插入数据库。

那么要自动赋的值在哪里配置?

在项目的config包下新建自动填充处理类使其实现接口MetaObjectHandler

并重写其方法:

package com.ws.api.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component;import java.util.Date;/*** 自动填充处理类* @author badao* @version 1.0* @see**/ @Component public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.setFieldValByName("modifierId", new Long(111), metaObject);this.setFieldValByName("gmtModified", new Date(), metaObject);this.setFieldValByName("creatorId", new Long(111), metaObject);this.setFieldValByName("gmtCreat",new Date(), metaObject);this.setFieldValByName("availableFlag",true, metaObject);}@Overridepublic void updateFill(MetaObject metaObject) {this.setFieldValByName("modifierId", new Long(111), metaObject);this.setFieldValByName("gmtModified", new Date(), metaObject);} }

其中方法参数中第一个是前面自动填充所对应的字段,第二个是要自动填充的值。

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的MyBatisPlus中使用 @TableField完成字段自动填充的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。