今早正在开心撸代码的时候,报了一个错。
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 的方法也是这样的问题。
于是我开始从尝试是不是因为mybatis plus 版本太低的原因?
换了版本到 3.3.1.tmp 版本后。一切正常。
<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>