參考博客:mybatis createCriteria和or的區別
1、example.or()
TestTableExample example = new TestTableExample();
example.or()
.andField1EqualTo(5)
.andField2IsNull();
example.or()
.andField3NotEqualTo(9)
.andField4IsNotNull();
List field5Values = new ArrayList();
field5Values.add(8);
field5Values.add(11);
field5Values.add(14);
field5Values.add(22);
example.or()
.andField5In(field5Values);
example.or()
.andField6Between(3, 7);
生成的where句子是:
where (field1 = 5 and field2 is null)
or (field3 <> 9 and field4 is not null)
or (field5 in (8, 11, 14, 22))
or (field6 between 3 and 7)
將會返回滿足這些條件的記錄結果.
@Test
public void test2() {
Test1Example example=new Test1Example();
Test1Example.Criteria criteria=example.createCriteria();
criteria.andIdBetween(11,14);
criteria.andScoreBetween(70,80);
Test1Example.Criteria criteriaOr1=example.or();
criteriaOr1.andIdEqualTo(15);
Test1Example.Criteria criteriaOr2=example.or();
criteriaOr2.andIdGreaterThanOrEqualTo(17);
criteriaOr2.andScoreGreaterThan(60);
List<Test1> list=test1ExmpleDao.selectByExample(example);
System.out.println(Arrays.toString(list.toArray()));
}
生成的sql:
select id, `name`, course, score FROM test1
WHERE ( id between 11 and 14 and score between 70 and 80 ) or( id = 15 ) or( id >= 17 and score > 60 );
2、example.or(Criteria criteria)
直接將查詢條件加入當前的oredCriteria中,並不會新建新查詢條件
pubic void or(Criteria criteria){
oredCriteria.add(criteria);
}
tips:
在Example中的每一個Criteria相當於一個括號,把裏面的內容當成一個整體