FieldMetaObjectHandler在使用UpdateWrapper更新数据的时候没有执行

提问 未结 3 100
goooodbye
goooodbye VIP2 2019-06-05
悬赏:20积分
版本:renren-security 2.3.0 浏览器:Chrome
FieldMetaObjectHandler中的insert和update只有调用baseDao.insert(entity)和baseDao.updateById(entity)才会生效 在调用baseDao.update(null, UpdateWrapper)的时候并没有执行 请教一下,就是这么设计的,还是我使用方法不对
回帖
  • goooodbye
    2019-06-05
    我看到mybatisPlus文档 (https://mybatis.plus/guide/faq.html#%E9%80%BB%E8%BE%91%E5%88%A0%E9%99%A4%E4%B8%8B-%E8%87%AA%E5%8A%A8%E5%A1%AB%E5%85%85-%E5%8A%9F%E8%83%BD%E6%B2%A1%E6%9C%89%E6%95%88%E6%9E%9C)[https://mybatis.plus/guide/faq.html#%E9%80%BB%E8%BE%91%E5%88%A0%E9%99%A4%E4%B8%8B-%E8%87%AA%E5%8A%A8%E5%A1%AB%E5%85%85-%E5%8A%9F%E8%83%BD%E6%B2%A1%E6%9C%89%E6%95%88%E6%9E%9C] 中说 [pre] 自动填充的实现方式是填充到入参的entity内,由于baseMapper提供的删除接口入参不是entity所以逻辑删除无效 如果你想要使用自动填充有效: 方式一: 使用update方法:UpdateWrapper.set("logicDeleteColumn","deleteValue") [/pre] 没看明白要如何使用UpdateWrapper才能使自动填充有效
    0 回复
  • @goooodbye 应该是new UpdateWrapper().set() 吧
    0 回复
  • goooodbye
    2019-06-06
    对的,比如UserServiceImpl中的updatePassword,我用以下实现。只更新了password,并没有调用自动填充中的updateFill去塞入更新时间和更新人 [pre] @Override @Transactional(rollbackFor = Exception.class) public boolean updatePassword(Long id, String newPassword) { newPassword = PasswordUtils.encode(newPassword); return update(new UpdateWrapper<UserEntity>() .eq("del_flag", 0) .eq("id", id) .set("password", newPassword)); } [/pre]
    0 回复