码迷,mamicode.com
首页 > Web开发 > 详细

关于mybatis plus 中 MetaObjectHandler 自动填充功能出现的问题及处理

时间:2020-01-07 16:40:16      阅读:3033      评论:0      收藏:0      [点我收藏+]

标签:date   base   get   fill   源码   bsp   set   time   inf   

1、自动填充的字段:

createdBy,updatedBy,createdDate,updatedDate
/**
* 插入使用
*/

@Override
public void insertFill(MetaObject metaObject) { String operator = "bokai"; fillValue(metaObject, CREATED_BY, () -> operator); fillValue(metaObject, UPDATED_BY, () -> operator); fillValue(metaObject, CREATED_DATE, () -> getDateValue(metaObject.getSetterType(CREATED_DATE))); fillValue(metaObject, UPDATED_DATE, () -> getDateValue(metaObject.getSetterType(UPDATED_DATE))); } @Override public void updateFill(MetaObject metaObject) { String operator = "bokai"; fillValue(metaObject, "et."+UPDATED_BY, () -> operator); fillValue(metaObject, "et."+UPDATED_DATE, () -> getDateValue(metaObject.getSetterType("et."+UPDATED_DATE))); } private void fillValue(MetaObject metaObject, String fieldName, Supplier<Object> valueSupplier) { if (!metaObject.hasGetter(fieldName)) { return; } Object sidObj = metaObject.getValue(fieldName); if (sidObj == null && metaObject.hasSetter(fieldName) && valueSupplier != null) { setFieldValByName(fieldName, valueSupplier.get(), metaObject); } } private Object getDateValue(Class<?> setterType) { if (Date.class.equals(setterType)) { return new Date(); } else if (LocalDateTime.class.equals(setterType)) { return LocalDateTime.now(); } return null; }

涉及获取需要更新的createdDateupdatedDate 字段属性的类型

2、insertFill方法和updateFill方法的入参 MetaObject metaObject 中的属性不同

 

 metaObject.getSettreType()获取字段属性类型的Class在 insertFill 和 updateFill 中就不能同样使用了

 

  insertFill中metaObject如下:

技术图片

 

 

 

 

  updateFill中metaObject如下:

技术图片

 

 

 我们去看BaseMapper源码,如下:

技术图片

 

 

 可以看出update的语句都有 et

更新时,我们需要使用et.字段名才会生效

关于mybatis plus 中 MetaObjectHandler 自动填充功能出现的问题及处理

标签:date   base   get   fill   源码   bsp   set   time   inf   

原文地址:https://www.cnblogs.com/bokai/p/12161905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!