如下代码,即使设置了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;
}
}
}