曹培英
java联动_关于省,市,区联动java实现⽅式
关于省,市,区的三级联动后台的实现有两种⽅式:percent
1:分三次请求各⾃取出 省 市 区 的数据;
2:⼀次请求获得所有的数据,并且组装成相依的数据结构到前端;
其中第⼀种⽅式:
会导致数据的延迟加载,出现的情况是 省 有数据了,市和区⼀级还没有数据,导致⽤户的体验不好;这种⽅式只有省⼀级的数据可以提前加载好,市和区⼀级的数据只⽤等到选中后才开始请求;
第⼆种实现⽅式:
1):查出省--->遍历省,查出省下⾯的市--->遍历市,查出市下⾯的区:组好相应的数据结构;这种⽅式的缺点:多次查询数据库,市和区的数据有多少条
就会查询多少次数据库,这样效率很低,在不加缓存的情况下这种的查询中国下所有的省市区需要的时间为:18s左右
/
/根据id查找出最顶层对象
TbTreeExample example=newTbTreeExample();
TbTree tree = tbTreeMapper.lectByExample(example).get(0);
//查找所有的省份
TbTreeExample provinceExample=newTbTreeExample();
List provinces =tbTreeMapper.lectByExample(provinceExample);
for(TbTree province : provinces) {
冬至放假吗//查找所有的市
TbTreeExample cityExample=newTbTreeExample();
紫色花语
List cities =tbTreeMapper.lectByExample(cityExample);
《如梦令》古诗for(TbTree city : cities) {
//查找所有的区
TbTreeExample districtExample=newTbTreeExample();
List districts =tbTreeMapper.lectByExample(districtExample);
city.tNodes(districts);
}
province.tNodes(cities);
}
仰面朝天的意思tree.tNodes(provinces);
return tree;
2):⼀次性查出省市区所有的数据,然后在内存中组成相应的结构给到前台:
这种⽅式在没有缓存的情况下查询的时间为:0.7-0.8s左右;
代码如下:
TbTreeExample example=newTbTreeExample();
List trees =tbTreeMapper.lectByExample(example);
for(TbTree country : trees) {
Id()==id){
//获取省
for(TbTree province : trees){
pId()==Id()){
//获取市
for(TbTree city : trees) {
pId()==Id()){
//获取区
for(TbTree district : trees) {
pId()==Id()){
}
}
}
}
}
门卫招聘信息}
returncountry;个人简历自荐信
}
}
return null;
}
当然我这⾥⽤的是遍历的⽅式来实现这种⽅式,也可以⽤递归的⽅式来实现这种业务;