最近在使用QueryWrapper编写查询语句时发现复杂的SQL不会写。在网上找了半天,终于得到了点启示。在此做个记录以备忘。
我要实现的SQL是这样的:
-- 实现这个复杂查询
-- 查询设备表
select *
from oa_device
where ((dev_code = 'BSD1003' and dev_status = 'ON') or (dev_code = 'BB1001' and dev_status = 'ON'))
and created_by = 470758437463393305;
QueryWrapper的代码实现如下:
//实现的查询语句
QueryWrapper<OaDevice> qry = new QueryWrapper<>();
qry.or(i->i.and(j->j.eq("dev_code","Bxx003").eq("dev_status","ON"))
.or(k->k.eq("dev_code","Bxx001").eq("dev_status","ON")));
qry.eq("created_by","4707xxxxxx3305");
实际运行截图如下:
由此可见,更复杂的SQL也可以通过这种方式进行拼接。
参考文章(谢谢作者):
https://www.jianshu.com/p/e5388550b117