千家信息网

lambdaQueryWrapper多条件嵌套查询方法是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"lambdaQueryWrapper多条件嵌套查询方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"lambdaQueryW
千家信息网最后更新 2026年11月01日lambdaQueryWrapper多条件嵌套查询方法是什么

这篇文章主要讲解了"lambdaQueryWrapper多条件嵌套查询方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"lambdaQueryWrapper多条件嵌套查询方法是什么"吧!

    lambdaQueryWrapper多条件嵌套查询

    需求:根据条件获取一段时期内按照年份和周存储的数据

    表结构如下

    userNetTypemoduleNamecityNamesubjectCnamesubjectEnamepvuvyearweek
    11江苏省死神专题sszt10070201951
    11江苏省海贼王专题hzwzt20080201952
    11江苏省火影忍者专题hyrzzt30090202001
    /**     * @param pageNum     当前页     * @param pageSize    每页条数     * @param moduleName  产品     * @param userNetType 运营商     * @param cityName    城市名称     * @param beginTime   开始周的任意一天日期(例如:2019-12-20)     * @param endTime     结束周的任意一天日期(例如:2020-01-20)     * @param keyWord     查询条件(专题英文名或者中文名)     * @return     */        //开始年份        String beginYear = null;        //结束年份        String endYear = null;        //开始周数        String beginWeek = null;        //结束周数        String endWeek = null;        /*这部分内容忽略,调用了其他的方法,         反正就是为了获取开始日期所在的年份、周数以及结束日期所在的年份、周数*/        if (StringUtils.isBlank(beginTime) || StringUtils.isBlank(endTime)) {            DateTime dateTime = DateUtil.lastWeek();            //格式化日期,结果:yyyyMMdd            beginTime = DateUtil.formatDate(dateTime);            beginYear = TimeUtils.getDateOfYearWeek(beginTime).get("year");            endYear = beginYear;            beginWeek = TimeUtils.getDateOfYearWeek(beginTime).get("week");            endWeek = beginWeek;        } else {            beginYear = TimeUtils.getDateOfYearWeek(beginTime).get("year");            endYear = TimeUtils.getDateOfYearWeek(endTime).get("year");            beginWeek = TimeUtils.getDateOfYearWeek(beginTime).get("week");            endWeek = TimeUtils.getDateOfYearWeek(endTime).get("week");        }        Page page = new Page<>(pageNum, pageSize);        LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();        if (beginYear.equals(endYear)) {            queryWrapper.eq(DwSubjectDataInfoWw::getYear, beginYear);            queryWrapper.between(DwSubjectDataInfoWw::getWeek, beginWeek, endWeek);        } else {            //因为Java8 Lambda表达式中最终变量问题,重新赋值一个参数解决            String year1 = beginYear;            String year2 = endYear;            String week1 = beginWeek;            String week2 = endWeek;            queryWrapper.and(wrapper -> wrapper.and(wrapper1 -> wrapper1.eq(DwSubjectDataInfoWw::getYear, year1).ge(DwSubjectDataInfoWw::getWeek, week1))                    .or(wrapper2 -> wrapper2.eq(DwSubjectDataInfoWw::getYear, year2).le(DwSubjectDataInfoWw::getWeek, week2)));        }        queryWrapper.orderByDesc(DwSubjectDataInfoWw::getYear);        queryWrapper.orderByDesc(DwSubjectDataInfoWw::getWeek);        if (StrUtil.isNotEmpty(cityName)) {            queryWrapper.eq(DwSubjectDataInfoWw::getCityName, cityName);        }        if (StrUtil.isNotEmpty(userNetType)) {            queryWrapper.eq(DwSubjectDataInfoWw::getUserNetType, userNetType);        }        if (StrUtil.isNotEmpty(moduleName)) {            queryWrapper.eq(DwSubjectDataInfoWw::getModuleName, moduleName);        }        //搜索条件可以是专题中文名或英文名        if (StrUtil.isNotEmpty(keyWord)) {            queryWrapper.and(wrapper -> wrapper.like(DwSubjectDataInfoWw::getSubjectCname, keyWord).or().like(DwSubjectDataInfoWw::getSubjectEname, keyWord));        }        try {            Page list = dwSubjectDataInfoWwService.page(page, queryWrapper);            return AjaxResult.success(list);        } catch (Exception e) {            logger.error("获取分周专题数据列表错误,错误信息为:", e);            return AjaxResult.error();        }

    下面是根据条件生成的SQL语句

    WHERE    (        (            (year = ? AND week >= ?)            OR (year = ? AND week <= ?)        )        AND city_name = ?        AND user_net_type = ?        AND module_name = ?        AND (            subject_cname LIKE ?            OR subject_ename LIKE ?        )    )ORDER BY    year DESC,    week DESC

    LambdaQueryWrapper 常用条件

    感谢各位的阅读,以上就是"lambdaQueryWrapper多条件嵌套查询方法是什么"的内容了,经过本文的学习后,相信大家对lambdaQueryWrapper多条件嵌套查询方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

    条件 查询 专题 方法 年份 日期 内容 江苏 江苏省 学习 中文名 就是 所在 数据 错误 问题 中文 英文 参数 变量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 互联网医疗科技 智慧科技互联网 科技互联网的估值 互联网金融科技公司干啥的 互联网校园科技培训 互联网科技大奖都有哪些公司 米聚互联网科技南京有限公司排面 中国科技创新与世界互联网大会 互联网新科技动漫ppt素材 迪庆互联网科技招生 恒生互联网科技业指数调整周期 互联网时代的科技公司 互联网金融科技元年 互联网科技收购价值 福仕德教育科技互联网 安徽零酒互联网科技有限公司 互联网科技创新方面的资料 互联网企业和网络科技有限公司 前海云享互联网科技 广东万易互联网科技有限公司惠州分公司 远信互联网科技 互联网科技媒体 奇酷互联网络科技 甘肃拓世互联网科技有限公司 海南购全球互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 烟台灵鸽互联网科技有限公司 南京一网一红互联网科技有限公司 福建互联网展示科技馆设计
    0