省市区三级联动,数据库根据id规律存储,得到以下形式的数据
{
“list”: {
“first”: [
{
“id”: “110000”,
“name”: “北京”,
“ssqename”: “”,
“second”: [
{
“id”: “110100”,
“name”: “市辖区”,
“ssqename”: “”,
“third”: [
{
“id”: “110229”,
“name”: “延庆县”,
“ssqename”: “”
}
]
}
]
},
{
“id”: “120000”,
“name”: “天津”,
“ssqename”: “”,
“second”: [
{
“id”: “120100”,
“name”: “市辖区”,
“ssqename”: “”,
“third”: [
{
“id”: “120101”,
“name”: “和平区”,
“ssqename”: “”
}
后台代码
/**
* @Title: datalistPage
* @Description: TODO(查询省市区信息,参数传递 地区id:area_id 成功返回:0000 失败返回:1111)
* @param @return 设定文件
* @return Object 返回类型
* @throws
*/
@RequestMapping(value = "/areainfolist")
@ResponseBody
public Object areaInfoList(){
PageData pd = new PageData();
pd = this.getPageData();
Map<String,Object> map = new HashMap<String,Object>();
String retCode = "0000";//默认 请求成功
String retMsg = "success";
try {
List<PageData> list = new ArrayList<>();
List<PageData> provinceList = areaInfoService.provinceList(pd);
PageData fpd = new PageData();
List<PageData> lists = new ArrayList<>();
for (PageData province : provinceList) {
if (province.getString("id").length() == 6){
lists.add(province);
}
}
fpd.put("first",lists);
list.add(fpd);
if (lists != null && lists.size()>0){
for (PageData pageData : lists) {
List<PageData> cityList = areaInfoService.cityList(pageData);
pageData.put("second",cityList);
if (cityList != null && cityList.size() > 0){
for (PageData city : cityList) {
List<PageData> region = areaInfoService.regionList(city);
city.put("third", region);
}
}
}
map.put("list",list);
}
} catch (Exception e) {
logger.error(e.toString(), e);
retCode = "1111";//请求失败
retMsg = "fail"; //请求失败
}finally{
map.put("retCode", retCode);//请求成功
map.put("retMsg", retMsg);
}
return map;
}
}
sql
<!--查询省列表-->
<select id="provinceList" parameterType="pd" resultType="pd">
select
area_id AS id,
area_name AS name
from area_info
where 1=1
</select>
<!--查询省对应的市列表-->
<select id="cityList" parameterType="pd" resultType="pd">
select
area_id AS id,
area_name AS name
from area_info
where 1=1
and area_id like concat(#{id},'%') and LENGTH(area_id) = 10
</select>
<!--查询市对应的区列表-->
<select id="regionList" parameterType="pd" resultType="pd">
select
area_id AS id,
area_name AS name
from area_info
where 1=1
and area_id like concat(#{id},'%') and LENGTH(area_id) = 15
</select>