Java多表进行搜索查询(模糊和具体)

应用场景

对于存在多表的模糊或者具体搜索查询,能够根据查询到的id,在关联表里面进行筛选

代码

<select id="search" resultType="cn.datax.service.data.standard.pojo.BaseAssetsMappingPojo">
        SELECT sm.* FROM `standard_mapping` sm,`metadata_columns` mc,`standard_codebase` sc
        <where>
            AND sm.metadata_id=mc.id AND sm.standard_id=sc.id
            <if test="map.keywords!= null and map.keywords!=">
            AND (mc.column_ename LIKE CONCAT(%,#{map.keywords},%)
            OR sc.name_ch LIKE CONCAT(%,#{map.keywords},%))
            </if>
            <if test="map.nodeName!= null and map.nodeName!=">
            AND
            sm.standard_id IN (SELECT id FROM `standard_codebase` WHERE tree_id IN (
            SELECT id FROM `standard_codetree` WHERE parent_id IN (
            SELECT id FROM `standard_codetree` WHERE parent_id IN (
            SELECT id FROM `standard_codetree` WHERE parent_id IN (
            SELECT id FROM `standard_codetree` WHERE parent_id IN (
            SELECT id FROM `standard_codetree` WHERE node_name =#{map.nodeName}))))))
            </if>
            <if test="map.dbName!= null and map.dbName!=">
            AND
            sm.metadata_id IN (
            SELECT mc.id FROM `metadata_columns` mc WHERE mc.db_name=#{map.dbName})
            </if>
            <if test="map.mappingDegree!= null and map.mappingDegree!=">
            AND
            mapping_degree = #{map.mappingDegree}
            </if>
        </where>
    </select>
@RequestMapping("/findMappingAll")
    public R findMappingAll(@RequestBody Map<String, Object> map) {
          
   
        List<BaseAssetsMappingPojo> mappingAll2 = null;
        List<BaseAssetsMappingPojo> mappingAll = null;
        Integer pageNum = Integer.parseInt(map.get("pageNum").toString());
        Integer pageSize = Integer.parseInt(map.get("pageSize").toString());
        String keywords = map.get("keywords").toString();
        String dbName = map.get("dbName").toString();
        String nodeName = map.get("nodeName").toString();
        String mappingDegree = map.get("mappingDegree").toString();
        if (keywords == "" && dbName == "" && nodeName == "" && mappingDegree == ""){
          
   
            //查询所有
            mappingAll2 = baseAssetsDao.findMapping();
            PageHelper.startPage(pageNum, pageSize);
            mappingAll = baseAssetsDao.findMapping();
            //表格信息
            List<BaseAssetsMappingPojo> mappingAll1 = forMapping(mappingAll);
            Map<String, Object> params = new HashMap<>();
            params.put("data", mappingAll1);
            params.put("total", mappingAll2.size());
            return R.ok().setData(params);
        }
//        //根据daName查询到metadataId
//        List<Integer> metadataId = baseAssetsDao.findDaName(daName);
//        //根据nodeName查询到standardId
//        List<Integer> standardId = baseAssetsDao.findNodeNameOne(nodeName);
//        //根据mappingDegree直接查询
        //走搜索
        mappingAll2 = baseAssetsDao.search(map);
        PageHelper.startPage(pageNum, pageSize);
        mappingAll = baseAssetsDao.search(map);
        //表格信息
        List<BaseAssetsMappingPojo> mappingAll1 = forMapping(mappingAll);
        Map<String, Object> params = new HashMap<>();
        params.put("data", mappingAll1);
        params.put("total", mappingAll2.size());
        return R.ok().setData(params);
    }
经验分享 程序员 微信小程序 职场和发展