赞
踩
参考mybatis-plus官网的手册
https://mp.baomidou.com/guide/annotation.html#tablefield
默认值是:FieldFill.DEFAULT
值 | 描述 |
---|---|
DEFAULT | 默认不处理 |
INSERT | 插入时填充字段 |
UPDATE | 更新时填充字段 |
INSERT_UPDATE | 插入和更新时填充字段 |
一般在JAVA 数据库持久化类DTO中定义,为了在数据insert、update时,能够自动填充
- @TableField(
- value = "create_time",
- fill = FieldFill.INSERT
- )
- private Date createTime;
- @TableField(
- value = "create_user",
- fill = FieldFill.INSERT
- )
- private Long createUser;
- @TableField(
- value = "update_time",
- fill = FieldFill.UPDATE
- )
- private Date updateTime;
- @TableField(
- value = "update_user",
- fill = FieldFill.UPDATE
- )
- private Long updateUser;
配置完成后,就是解决在哪里触发填充的事,它是通过定义拦截器xxx,继承mybatis-plus core中的接口MetaObjectHandler,插入时填充操作卸载insertFill,依次类推。
- /**
- * 自动补充插入或更新时的值
- *
- */
- @Component
- public class CustomMetaObjectHandler implements MetaObjectHandler {
- private static final Logger log = LoggerFactory.getLogger(CustomMetaObjectHandler.class);
-
- public CustomMetaObjectHandler() {
- }
-
- public void insertFill(MetaObject metaObject) {
- try {
- this.setFieldValByName("createUser", this.getUserUniqueId(), metaObject);
- this.setFieldValByName("createTime", new Date(), metaObject);
- this.setFieldValByName("delFlag", YesOrNotEnum.N.getCode(), metaObject);
- this.setFieldValByName("statusFlag", StatusEnum.ENABLE.getCode(), metaObject);
- } catch (ReflectionException var3) {
- log.warn("CustomMetaObjectHandler处理过程中无相关字段,不做处理");
- }
-
- }
-
- public void updateFill(MetaObject metaObject) {
- try {
- this.setFieldValByName("updateUser", this.getUserUniqueId(), metaObject);
- this.setFieldValByName("updateTime", new Date(), metaObject);
- } catch (ReflectionException var3) {
- log.warn("CustomMetaObjectHandler处理过程中无相关字段,不做处理");
- }
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。