我是靠谱客的博主 甜美唇彩,最近开发中收集的这篇文章主要介绍利用递归查询部门表,以树(tree)的结构展示返回给前端出来,一般都要有这种需求的,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一步写sql语句查询所有数据,或者根据条件查询所有需要的数据

我这边是根据创建的时间升序来排列的


<sql id="selectionCondition">
<if test="materialId != null">and MATERIAL_ID=#{materialId}</if>
<if test="materialCode != null">and MATERIAL_CODE=#{materialCode}</if>
<if test="materialName != null">and MATERIAL_NAME=#{materialName}</if>
<if test="parentId != null">and PARENT_ID=#{parentId}</if>
<if test="type != null">and TYPE_=#{type}</if>
<if test="status != null">and STATUS_=#{status}</if>
</sql>
<!--通过实体作为筛选条件查询-->
<select id="selectTree" resultMap="BaseResultMap">
select
MATERIAL_ID,MATERIAL_CODE,MATERIAL_NAME,MATERIAL_LEVEL_CODE,INDEX_,
PARENT_ID,TYPE_,CREATE_USER_ID,CREATE_DATE,MODIFY_USER_ID,MODIFY_DATE,
ENABLE_,STATUS_,REMARK_,INVENTORY_
from
biz_material
<where>
<include refid="selectionCondition"/>
</where>
ORDER BY INDEX_ asc,CREATE_DATE asc
</select>

第二步写mapper层代码返回一个List集合

	List<BizMaterial> selectTree(BizMaterial bizMaterial);

第三步写一个dto类继承自己需要查询返回部门表的类并且写一个属性(BizMaterial是我要查询的的部门表)

public class BizMaterialDto extends BizMaterial {
private List<BizMaterialDto> childMaterials = new ArrayList<>();
public List<BizMaterialDto> getChildMaterials() {
return childMaterials;
}
public void setChildMaterials(List<BizMaterialDto> childMaterials) {
this.childMaterials = childMaterials;
}
}

第四部在service层写一个接口

 Result selectAll();

第五步在serviceImpl层写一个实现类


public Result selectAll() {
//新建一个对象
BizMaterial bizMaterial = new BizMaterial();
//查询所有的数据
List<BizMaterial> bizMaterials = bizMaterialMapper.selectTree(bizMaterial);
//如果为空的话就直接return
if(CollectionUtils.isEmpty(bizMaterials)){
return new Result(1,"查询失败")
}
List<BizMaterialDto> bizMaterialDtoList = Util.copyList(bizMaterials, BizMaterialDto.class);
//获取一级物资模板
List<BizMaterialDto> topMaterial = bizMaterialDtoList.stream().filter(material -> material.getParentId().intValue() == Constant.NUM_ZERO).collect(Collectors.toList());
// 为一级人员模板设置子人员模板,planPersonChild是递归调用的
for (BizMaterialDto materialDto : topMaterial) {
materialChild(bizMaterialDtoList, materialDto);
}
return new Result(0,"查询成功",topMaterial);;
}
//递归的方法
private BizMaterialDto materialChild(List<BizMaterialDto> materialList,BizMaterialDto parent) {
for (BizMaterialDto materialDto : materialList) {
if (materialDto.getParentId().equals(parent.getMaterialId())) {
parent.getChildMaterials().add(materialDto);
materialChild(materialList, materialDto);
}
}
return parent;
}

第六步就是controller层的代码了就一行代码就没有了


/**
* 查询所有
*
* @return
*/
@RequestMapping(value = "/selectAll")
public Result selectAll() {
return bizMaterialService.selectAll();
}

最后就是以树的结构展示出来了,希望保姆式教学希望对大家有用,如果对大家有帮助希望大家评论个有用

最后

以上就是甜美唇彩为你收集整理的利用递归查询部门表,以树(tree)的结构展示返回给前端出来,一般都要有这种需求的的全部内容,希望文章能够帮你解决利用递归查询部门表,以树(tree)的结构展示返回给前端出来,一般都要有这种需求的所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部