Mybatis tkmapper的Example(and ,or )复杂嵌套查询写法

男娘i 2022-10-31 04:26 99阅读 0赞

背景

我们一般的sql写法是 where a=1 and b=1

select name from student where `name`=”zhangsan1” and age = 18;

复杂一点的写法 where (a=1 and b=2) or (b=1 and d=2)

select name from student where (`name`=”zhangsan1” and `code=16) or (age = 18 and address = “beijing”);

分析

使用tkmapper一般为了快速实现逻辑,都使用的example,比如上面的一般sql写法转换为tkmapper的example写法

Example e = new Example(Student.class);

Example.Criteria criteria = e.createCriteria();

criteria.andEqualTo(“name”, zhangsan1);

criteria.andEqualTo(“age “, 18);

对于复杂的sql写法怎么转换?其实一般不建议还用example写复杂sql,后期不好维护,如果为了快速实现逻辑不注重规范的话,这里教一下怎么写

分析结果拆分:where (a=1 and b=2) or (b=1 and d=2),这里是两个小的嵌套子查询

实现逻辑

总查询

Example e = new Example(Student.class);

Example.Criteria criteria = e.createCriteria();

criteria.andEqualTo(“a”, 1);

criteria.andEqualTo(“b”, 2);

接着创建子查询语句

Example.Criteria criteria2 = e.createCriteria();

criteria2 .andEqualTo(“b”, 1);

criteria2 .andEqualTo(“d”, 2);

然后合并起来

e.or(criteria2);

完成

发表评论

表情:
评论列表 (有 0 条评论,99人围观)

还没有评论,来说两句吧...

相关阅读