将数据库查询出来的数据转化成树形结构

从数据库查询的每一条数据都包含id和fid字段,将获得的数据转换成树形结构

假设从数据库查询出来的数据对应的实体类:

public class department {
    private  int id;
    private int fid;
    private String name;
    private List<department> list;
    public department() {
    }
    public department(int id, int fid, String name, List<department> list) {
        this.id = id;
        this.fid = fid;
        this.name = name;
        this.list = list;
    }
    .......
}

将获得数据转化成属性结构

public class DepartmentUtil {

    public List<department> transDepartment(List<department> rootList){
        List<department> nodeList = new ArrayList<>();
        for (department department : rootList) {
            if (department.getId()==0){//表明是一级父类
                nodeList.add(department);
            }
            department.setList(setChild(department.getId(),rootList));
        }
        return nodeList;
    }
    public List<department> setChild(int id, List<department> list ){
        List<department> childList = new ArrayList<>();
        for (department department : list) {
            if (id == department.getFid()){
                childList.add(department);
            }
        }
        for (department department : childList) {
            department.setList(setChild(department.getId(),list));
        }
        if (childList.size()==0){
            return null;
        }
        return childList;
    }
}

通过sql一对多方式实现树形结构的数据格式

  <resultMap id="cityMap" type="com.jiucheng.vo.city">
        <id column="CityID" property="CityID"/>
        <result column="CityName" property="CityName"/>
        <result column="RootID" property="RootID"/>
        <result column="Child" property="Child"/>
        <result column="Layer" property="Layer"/>
        <result column="Sort" property="Sort"/>
        <result column="Isopen" property="Isopen"/>
        <collection property="list" ofType="com.jiucheng.vo.city"
                    column="CityID" select="getChildCity"/>
    </resultMap>

    <select id="findAll" resultMap="cityMap">
        select * from city where RootID = 0
    </select>

    <select id="getChildCity" resultType="com.jiucheng.vo.city">
         select * from city WHERE  RootID = #{CityID}
     </select>

实体类为数据库的映射对应的实体类

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格斗小巨人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值