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);
}
