今早正在開心撸代碼的時候,報了一個錯。
metaObject.hasSetter 在updateFill 方法中
将我原本實體類上沒有的字段 在hasSetter 中也判斷成了true???
什麼問題,難道底層出錯了。
@Override
public void updateFill(MetaObject metaObject) {
//是否存在set方法
boolean hasModifyTime = metaObject.hasSetter("ModifyTime");
//拿到updateTime的值
Object modifyTime = getFieldValByName("ModifyTime", metaObject);
if (hasModifyTime){
//有set方法
if (modifyTime == null) {
//值為null填充
setFieldValByName("ModifyTime", new Date(), metaObject);
}
}
boolean hasModifierId = metaObject.hasSetter("ModifierId");
if(hasModifierId){
this.setFieldValByName("ModifierId", UserContext.getCurrentUser().getUserId(), metaObject);
}
}
當我檢視了源碼的時候我發現,它是在修改時候隻調用了MapWrapper這個方法。卻沒有調用BeanWrapper。
其實嘗試了兩邊後發現,hasGetTer 的方法也是這樣的問題。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1.tmp</version>
</dependency>