文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-26 05:23

关注

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

lambdaQueryWrapper多条件嵌套查询

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

表结构如下

userNetTypemoduleNamecityNamesubjectCnamesubjectEnamepvuvyearweek
11江苏省死神专题sszt10070201951
11江苏省海贼王专题hzwzt20080201952
11江苏省火影忍者专题hyrzzt30090202001
        //开始年份        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<DwSubjectDataInfoWw> page = new Page<>(pageNum, pageSize);        LambdaQueryWrapper<DwSubjectDataInfoWw> queryWrapper = Wrappers.<DwSubjectDataInfoWw>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<DwSubjectDataInfoWw> 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多条件嵌套查询方法是什么”的内容了,经过本文的学习后,相信大家对lambdaQueryWrapper多条件嵌套查询方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯