mysql lambda查询_lambdaQueryWrapper多条件嵌套查询

/**

* @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();

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值