小记
需求:字典表中有四条模板数据需要查询出来放在第一层,然后将对应的模板表里对应模板下的详细模板查询出来展示为二级。像层级树又不是。
表结构(主表)
子表
- 涉及到两个实体类,因为要给主表实体对象设置一个 children集合,返回对象类型为子表的实体对象。
private List children = new ArrayList<>();
2.service中代码实现
public List<ZxSpDataDictionary> getActivityTemtlateTree() {
// 1. 先获取当前的模板类型种类
ZxSpDataDictionary zxSpDataDictionary = new ZxSpDataDictionary();
// 2.查询出字典表中有哪些种类的模板
List<ZxSpDataDictionary> rootList = zxSpDataDictionaryMapper.queryTempleteList(zxSpDataDictionary);
// 3. 创建一个子表对象
ZxSpTemplateSubUnit zxSpTemplateSubUnit = new ZxSpTemplateSubUnit();
// 4. 获取子表中的数据
List<ZxSpTemplateSubUnit> childList = zxSpTemplateSubUnitMapper.queryTempleteList(zxSpTemplateSubUnit);
// 5. 判断主表是否为空
if (rootList != null && rootList.size() > 0){
// 6. 遍历主表查询出的数据
for (ZxSpDataDictionary spDataDictionary : rootList) {
// 7. 在遍历主表的时候创建一个参数类型子表对象的list集合
List<ZxSpTemplateSubUnit> templateSubUnitList = new ArrayList<>();
// 8. 遍历子表查询出的list集合 用每个元素跟当前元素做比较。
for (ZxSpTemplateSubUnit spTemplateSubUnit : childList) {
// 9. 获取主表和子表关联字段,进行匹配,如果匹配就把子表该条数据对象放入新创建的子表对象list集合
if (spDataDictionary.getValue().equals(spTemplateSubUnit.getTempleteType())){
templateSubUnitList.add(spTemplateSubUnit);
}
}
// 遍历完子表数据后,将临时集合设置为主表的子节点
spDataDictionary.setChildren(templateSubUnitList);
}
}
return rootList;
}
开发小白记录日常开发,如有好的方法还望不吝赐教。