省市县的递归查询
时间:2022-08-12 23:30:02
项目地址查询,省、市、县以递归集、市、县以子集。Vo如下:
@Data public class AreaQueryVo { @JsonSerialize(using = ToStringSerializer.class) private Integer id; private String cname; private List areaQueryVos; }
@Data注解为lombok,了解自己不知道的事情。
controller层代码如下:
/** * 查询地址表 * @return */ @RequestMapping("/selectArea") private List selectArea() { List areaQueryVos; //查询id对应数据为0 areaQueryVos = areaService.selectArea(0L); for (AreaQueryVo areaQueryVo : areaQueryVos) { List aqv = areaService.selectArea(areaQueryVo.getId()); digui(aqv); areaQueryVo.setAreaQueryVos(aqv); } return areaQueryVos; } public void digui(List aqv) { List areaQueryVoList; for (AreaQueryVo areaQueryVo : aqv) { areaQueryVoList = areaService.selectArea(areaQueryVo.getId()); if (areaQueryVoList.size() > 0) { areaQueryVo.setAreaQueryVos(areaQueryVoList); digui(areaQueryVoList); //循环调用自己 } } }
service层:
@Override public List selectArea(long parentId) { List areaQueryVos = areaDao.selectArea(parentId); return areaQueryVos; }
这里记得做下非空判断,防止查不到数据出错。
dao层代码如下:
一个非常简单的查询句子,但是这里要注意,因为是传来的int或long无法判断数据类型!= ' '。否则会出现不走if查询所有数据的条件。