我希望实现的sql:WHERE a.del_flag = ? AND ( a.customer_referee = ? OR referee.referee_id = ?)
坑1:创建QueryWrapper对象的时候没有指定entity类,导致下面代码编译报错:
QueryWrapper wrapper3 = new QueryWrapper();
wrapper3.eq("a.customer_referee",UserUtils.getCurrentUserDTO().getId())
.or().eq("referee.referee_id",UserUtils.getCurrentUserDTO().getId());
解决办法:
QueryWrapper<MyEntity> wrapper3 = new QueryWrapper<>();
wrapper3.eq("a.customer_referee",UserUtils.getCurrentUserDTO().getId())
.or().eq("referee.referee_id",UserUtils.getCurrentUserDTO().getId());
坑2:生成的sql脚本or条件不带括号,并且多出一个and,导致执行脚本报错:
queryWrapper.eq ("a.del_flag", 0 );
queryWrapper.and(Wrapper->{
queryWrapper.eq("a.customer_referee", UserUtils.getCurrentUserDTO().getId())
.or()
.eq("referee.referee_id", UserUtils.getCurrentUserDTO().getId());
});
生成的sql脚本为:
WHERE (a.del_flag = ? AND a.customer_referee = ? OR referee.referee_id = ? AND )
解决办法:
QueryWrapper<MyEntity> queryWrapper= new QueryWrapper<>(); queryWrapper.eq ("a.del_flag", 0 ); queryWrapper.and((wrapper)->{ wrapper.eq("a.customer_referee", UserUtils.getCurrentUserDTO().getId()) .or() .eq("referee.referee_id", UserUtils.getCurrentUserDTO().getId()); }); 生成的sql脚本为: WHERE (a.del_flag = ? AND (a.customer_referee = ? OR referee.referee_id = ?))
本文介绍使用QueryWrapper创建SQL查询时遇到的问题及解决方案,包括如何正确指定实体类和构建复杂的查询条件,避免SQL语法错误。
1万+

被折叠的 条评论
为什么被折叠?



