mybatis框架规定Criteria 类型是查询条件子句类型
Criterion类型是查询条件类型
Criteria extends GeneratedCirteria
mybatis框架规定如下:
同一个Criteria 类型对象中有一个List<Criterion> criteria 类型集合对象,criteria对象中的各个Criterion类型条件元素之间的逻辑关系是and
Example类型对象是查询参数对象,其内部有一个 List<Criteria> oredCriteria对象,该oredCriteria对象中的各个Criteria类型条件查询子句元素对象之间的逻辑关系是or
---------------------------------------
补充,转载其他博主
1.在Example中的每一个Criteria相当于一个括号,把里面的内容当成一个整体
where (Userid = "11" and pointname = "22")
1 2 3 | BasePointsExample.Criteria criteria1 = example.createCriteria(); criteria1.andUseridEqualTo( "11" ); criteria1.andPointnameLike( "22" ); |
2. and or的连用的话会有点麻烦
2.1 where (条件1 and 条件2) or ( 条件3 and 条件4)
1 2 3 4 5 6 7 8 | BasePointsExample.Criteria criteria1 = example.createCriteria(); criteria1.andUseridEqualTo( '11' ); criteria1.andPointnameLike(StringUtil.concatlike( '22' )); BasePointsExample.Criteria criteria2 = example.createCriteria(); criteria2.andUsernameEqualTo( '33' ); criteria2.andPointcontentLike(StringUtil.concatlike( '44' )); example.or(criteria2); |
2.2 where 条件1 and (条件2 or 条件3) 这是我碰到的问题,在网上看到一种拆分的方法感觉很好
A and ( B or C ) ==> ( A and B ) or ( A and C )
1 2 3 4 5 6 7 8 | BasePointsExample.Criteria criteria1 = example.createCriteria(); criteria1.andUseridEqualTo( '11' ); criteria1.andPointnameLike(StringUtil.concatlike( '22' )); BasePointsExample.Criteria criteria2 = example.createCriteria(); criteria2.andUseridEqualTo( '11' ); criteria2.andPointcontentLike(StringUtil.concatlike( '33' )); example.or(criteria2); |