mybatis——逆向工程中 where (条件1)and (条件2 or 条件3 or 条件4)
阅读原文时间:2023年07月13日阅读:1

where (条件1)and (条件2 or 条件3 or 条件4)

= where (条件1 and 条件2)or (条件1 and 条件3) or (条件1 and 条件4)

结果 是这样的

WHERE ( birthdate between ? and ? and username like ? ) or( birthdate between ? and ? and email like ? ) or( birthdate between ? and ? and phone like ? )

1. 在Example中每一个criteria相当于一个括号,把里面的内容当作一个整体。

Where(userid=’1’ and name=’2’)

1

2

3

4

UserExample example = new UserExample();

UserExample.Criteria c1 = example.createCriteria();

C1.andUseridEqualTo(“``1``”);

C2.andNameEqualTo(“``2``”);

` `C1.andUseridEqualTo(“1”)`.andNameEqualTo(“````2”);也可`

2. 在criteria中没有直接的or。

(1) where(A and B) or (C and D)

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)where 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);