Mybatis tkmapper的Example(and ,or )复杂嵌套查询写法
背景
我们一般的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);
完成。
还没有评论,来说两句吧...