Skip to content

设置safeDelete或safeUpdate为true后,deleteByExample和updateByExample条件等于null仍然会删除全表或更新全表 #753

@azengqiang

Description

@azengqiang

如下代码,即使设置了safeDelete或safeUpdate为true,仍然会删除全表或更新全表:

Example example = new Example(User.class);
example.createCriteria().andEqualTo("userName",null);
User user = new User();
user.setEmail("test");
userMapper.deleteByExample(example);
userMapper.updateByExample(user,example);

看了下源码实现,是否应该在tk.mybatis.mapper.util.OGNL#exampleHasAtLeastOneCriteriaCheck方法加上 criteria.isValid()的判断

if (criteriaList != null && criteriaList.size() > 0) {
       return true;
}
// 修改为
if (criteriaList != null && criteriaList.size() > 0) {
    for (Example.Criteria criteria : criteriaList) {
        if (criteria.isValid()) {
            return true;
         }
     }         
 }

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions