lambdaQueryWrapper多条件嵌套查询方法是什么(lambdaquerywrapper,开发技术)

时间:2024-04-28 15:17:34 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    lambdaQueryWrapper多条件嵌套查询

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

    表结构如下

    userNetTypemoduleNamecityNamesubjectCnamesubjectEnamepvuvyearweek11江苏省死神专题sszt1007020195111江苏省海贼王专题hzwzt2008020195211江苏省火影忍者专题hyrzzt30090202001
    /***@parampageNum当前页*@parampageSize每页条数*@parammoduleName产品*@paramuserNetType运营商*@paramcityName城市名称*@parambeginTime开始周的任意一天日期(例如:2019-12-20)*@paramendTime结束周的任意一天日期(例如:2020-01-20)*@paramkeyWord查询条件(专题英文名或者中文名)*@return*///开始年份StringbeginYear=null;//结束年份StringendYear=null;//开始周数StringbeginWeek=null;//结束周数StringendWeek=null;/*这部分内容忽略,调用了其他的方法,反正就是为了获取开始日期所在的年份、周数以及结束日期所在的年份、周数*/if(StringUtils.isBlank(beginTime)||StringUtils.isBlank(endTime)){DateTimedateTime=DateUtil.lastWeek();//格式化日期,结果:yyyyMMddbeginTime=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=newPage<>(pageNum,pageSize);LambdaQueryWrapper<DwSubjectDataInfoWw>queryWrapper=Wrappers.<DwSubjectDataInfoWw>lambdaQuery();if(beginYear.equals(endYear)){queryWrapper.eq(DwSubjectDataInfoWw::getYear,beginYear);queryWrapper.between(DwSubjectDataInfoWw::getWeek,beginWeek,endWeek);}else{//因为Java8Lambda表达式中最终变量问题,重新赋值一个参数解决Stringyear1=beginYear;Stringyear2=endYear;Stringweek1=beginWeek;Stringweek2=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);returnAjaxResult.success(list);}catch(Exceptione){logger.error("获取分周专题数据列表错误,错误信息为:",e);returnAjaxResult.error();}

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

    WHERE(((year=?ANDweek>=?)OR(year=?ANDweek<=?))ANDcity_name=?ANDuser_net_type=?ANDmodule_name=?AND(subject_cnameLIKE?ORsubject_enameLIKE?))ORDERBYyearDESC,weekDESC

    LambdaQueryWrapper 常用条件

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

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:lambdaQueryWrapper多条件嵌套查询方法是什么的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:如何实现J2SE入门下一篇:

    14 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18