递归查询地区数据

表结构:

 

 其中,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 @ 2022-09-07 10:14  丙炎  阅读(37)  评论(0)    收藏  举报