以市区县为例,第一级直接把市查出来就行,第二级根据市的名称查出区,第三级根据市、区的名称查出县。这里的市县区都是在同一张表。存在hashmap里。三个接口
第一级
直接从数据库把市全部查出即可
mapper
List<Map<String, String>> city();
mapper.xml
<select id="city" resultType="java.util.LinkedHashMap">
select 市 from 表名
</select>
service
// 这里的resultMap可以作为参数传进去,也可以像第二级,第三极那样直接在serviceImpl里new一个也行
Map<String, Object> city(Map<String, Object> resultMap);
serviceImpl
public Map<String, Object> city(Map<String, Object> resultMap) {
List<Map<String, String>> city= pacakageAreaMapper.city();
resultMap.put("city", city);
return resultMap;
}
controller
@RequestMapping("/")
public Map<String, Object> city() {
Map<String, Object> list = pacakageAreaService.city(resultMap);
return list;
}
第二级
根据第一级查询出来的市,查找出县。sql就是根据市的名称查找出区
mapper层
List<Map<String, String>>
area(@Param("city") String city);
mapper.xml
<select id="area" resultType="java.util.LinkedHashMap">
select 区 from 表名
where 市=#{市}
</select>
service层
Map<String,Object> area(@Param("city") String city);
serviceImpl
public Map<String, Object> area(String city) {
List<Map<String, String>> area= pacakageAreaMapper.area(city);
//这里的map必须要重新new一个,不能作为参数传进来,因为作为参数传进来的话,后面多次试验都会存在同一个map里面,不会覆盖。所以要new一个把之前的结果清掉,只要最新的结果(第三级也是一样)
HashMap<String, Object> map = new HashMap<>();
map.put("area",area);
return map;
}
controller
@RequestMapping("/")
public Map<String, Object> area(String city){
return pacakageAreaService.area(city);
}
第三级
根据第二级查询出来的县,查找出区。sql就是根据市、区的名称查找出县(这里的市区县三个都在同一张表)
mapper
List<Map<String, String>> county(@Param("city") String city,@Param("area") String area);
mapper.xml
<select id="county" resultType="java.util.LinkedHashMap">
select 县 from 表名
where 市=#{市} and 区=#{区}
</select>
service
Map<String,Object> county(@Param("city") String city,@Param("area") String area);
serviceImpl
public Map<String, Object> county(String city,String area) {
List<Map<String, String>> county= pacakageAreaMapper.couty(city, area);
//跟第二级一样
HashMap<String, Object> maps = new HashMap<>();
maps.put("county",county);
return maps;
}
controller
@RequestMapping("/")
public Map<String, Object> county(String city,String county){
return pacakageAreaService.county(city,county);
}
大致就是这样了。。。。