查询字表再去查询主表数据

最近工作中老是遇到,有个模糊查询要查询子表数据的,但只展示主表数据,今天在此记录下

        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>

 

以上内容纯属笔记记录!

 

posted @ 2024-07-16 11:39  多多指教~  阅读(1)  评论(0编辑  收藏  举报