lambdaQueryWrapper多条件嵌套查询方法是什么
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要讲解了"lambdaQueryWrapper多条件嵌套查询方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"lambdaQueryW
千家信息网最后更新 2025年01月31日lambdaQueryWrapper多条件嵌套查询方法是什么
这篇文章主要讲解了"lambdaQueryWrapper多条件嵌套查询方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"lambdaQueryWrapper多条件嵌套查询方法是什么"吧!
lambdaQueryWrapper多条件嵌套查询
需求:根据条件获取一段时期内按照年份和周存储的数据
表结构如下
userNetType | moduleName | cityName | subjectCname | subjectEname | pv | uv | year | week |
---|---|---|---|---|---|---|---|---|
1 | 1 | 江苏省 | 死神专题 | sszt | 100 | 70 | 2019 | 51 |
1 | 1 | 江苏省 | 海贼王专题 | hzwzt | 200 | 80 | 2019 | 52 |
1 | 1 | 江苏省 | 火影忍者专题 | hyrzzt | 300 | 90 | 2020 | 01 |
/** * @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"); } Pagepage = 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安全错误
数据库的锁怎样保障安全
哪些使用了数据库管理技术
邯郸前端软件开发价格表
三明软件开发
存储新闻文本用什么数据库
手机可以开一个服务器吗
崇明区企业软件开发创造辉煌
护苗网络安全手抄报人八开
软件开发哪家最好用
哈尔滨米诺网络技术有限公司
服务器测试指标
数据库对于文本的存储
软件开发用编程语言标准
创建网络安全方案
软件开发厦门比福州怎么样
软件开发外派优缺点
废旧笔记本可以做服务器吗
我的世界服务器内网
网络监控平台要用服务器吗
正版mt4平台服务器
互联网软件开发的五个阶段
服务器线程池使用率过高
云服务器会传染冠状病毒吗
什么是软件开发工程师待遇
磴口云计算网络安全
榆林软件开发简介
网络安全技术的新方向
python 截取数据库
搞科研的租用服务器
三门峡游戏软件开发
编程网络安全师