递归查询地区数据

表结构:

 

 其中,pid是父ID

mapper:

复制代码
    <select id="selectCalcAreaByPid" resultType="com.jydw.jysp_xsjc.entity.calc.CalcArea">
        select *
        from calc_area
        <where>
            <if test="pid != null">
                pid = #{pid}
            </if>
        </where>
    </select>
复制代码

service:

复制代码
    @Autowired
    private CalcAreaDao calcAreaDao;

    @Override
    public List<CalcArea> calcAreaTree() {
        List<CalcArea> calcAreaList;
        // 查询安徽省的数据
        calcAreaList = calcAreaDao.selectCalcAreaByPid(Constants.CALC_AREA_ANHUI);
        for (CalcArea areaQueryVo : calcAreaList) {
            List<CalcArea> tempList = calcAreaDao.selectCalcAreaByPid(areaQueryVo.getId());
            recurArea(tempList);
            areaQueryVo.setCalcAreaVos(tempList);
        }
        return calcAreaList;
    }

    /**
     * 递归调用
     * @param calcAreaList
     */
    public void recurArea(List<CalcArea> calcAreaList) {
        List<CalcArea> calcAreas;
        for (CalcArea calcArea : calcAreaList) {
            calcAreas = calcAreaDao.selectCalcAreaByPid(calcArea.getId());
            if (calcAreas.size() > 0) {
                calcArea.setCalcAreaVos(calcAreas);
                recurArea(calcAreas);
            }
        }
    }
复制代码

以上;

 

posted @   丙炎  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示