查询字表再去查询主表数据
最近工作中老是遇到,有个模糊查询要查询子表数据的,但只展示主表数据,今天在此记录下
List<String> productCodes = new ArrayList<>();
// 先去查询子表数据 if (StrUtil.isNotEmpty(pageProductQueryReq.getFormulaName())){ productCodes = productMapper.getDateByFormulaName(pageProductQueryReq.getFormulaName()); if (CollUtil.isEmpty(productCodes)){ Page<ProductVo> voPage = new Page<>(pageProductQueryReq.getCurrentPage(),pageProductQueryReq.getPageSize()); return BaseResponse.ok(voPage); } } Page<Product> page = new Page<>(pageProductQueryReq.getCurrentPage(),pageProductQueryReq.getPageSize()); LambdaQueryWrapper<Product> wrapper = new LambdaQueryWrapper<>(); wrapper.like(StringUtils.isNotEmpty(pageProductQueryReq.getProductCode()),Product::getProductCode,pageProductQueryReq.getProductCode()); wrapper.like(StringUtils.isNotEmpty(pageProductQueryReq.getProductName()),Product::getProductName,pageProductQueryReq.getProductName());
// 子表查询有数据,那就用in去查询 wrapper.in(CollUtil.isNotEmpty(productCodes),Product::getProductCode,productCodes); wrapper.orderByDesc(Product::getUpdateTime); Page<Product> productPage = productMapper.selectPage(page, wrapper); Page<ProductVo> productVoPage = new Page<>(); BeanUtil.copyProperties(productPage,productVoPage); productVoPage.setRecords(BeanUtil.copyToList(productPage.getRecords(),ProductVo.class)); List<ProductVo> records = productVoPage.getRecords();
以下为查询子表的数据
<select id="getDateByFormulaName" parameterType="java.lang.String" resultType="java.lang.String"> SELECT DISTINCT a.product_code as product_code FROM product_formula a LEFT JOIN parametric_formula b ON a.formula_id = b.formula_id and b.del_flag = 0 <where> <if test="formulaName != null and formulaName != ''"> and b.formula_name like concat('%',#{formulaName},'%') </if> </where> </select>
以上内容纯属笔记记录!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)