当前位置:   article > 正文

LambdaQueryWrapper多层嵌套 OR / AND。LambdaQueryWrapper.func()实现_lambdaquerywrapper or

lambdaquerywrapper or

1.想要实现的sql语句:

筛选条件有3个日期区间,日期之间是or的关系,整体是和外部的条件是and的关系。相对比较复杂,有嵌套的逻辑,没有办法顺序写OR或者AND。

SELECT * FROM table_name WHERE id = ? AND ( (date1 > ? AND date1 < ?) OR (date2 > ? AND date2 < ?) OR (date3 > ? AND date3 < ?) )

2. 用Mybatis-Plus的LambdaQueryWrapper<>()实现

因为需求中可能涉及到传入的日期筛选参数为空,所以需要做条件判空,因此使用的是 LambdaQueryWrapper.func()方法。

三组日期之间用or去连接,和外部的用and连接。

  1. queryWrapper.and(wrapper -> wrapper
  2. .or().or(
  3. wrapper_1 -> wrapper_1.func(i -> {
  4. if (Objects.nonNull(date1)) {
  5. i.ge(ModelToInsert::getDate1, date1);
  6. }
  7. }).func(j -> {
  8. if (Objects.nonNull(date2)) {
  9. j.le(ModelToInsert::getD
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/43704
推荐阅读
相关标签
  

闽ICP备14008679号