mybatis Example的Criteria使用时导致查询条件丢失
程序员文章站
2022-03-11 18:45:47
...
1. 问题描述
代码中使用example的Criteria时,使用如下格式,导致查询结果与实际结果不符
Example example=new Example();
example.createCriteria().andIdEqualTo(1);
example.createCriteria().andNameEqualTo('name');
example.createCriteria().andAgeEqualTo(20);
2 原因和解决方法
2.1 原因
原因很简单看下源码:
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
oredCriteria是Example维护的一个Criteria的List,因此在使用上述写法时会导致只有第一个Criteria能够加入到Example的oredCriteria,所以才会导致最后执行SQL时只有第一个查询条件可以起作用。