Mybatis中的Criteria中or方法的使用

參考博客: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相當於一個括號,把裏面的內容當成一個整體

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章