日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于省,市,区联动 java 实现方式

發(fā)布時間:2025/3/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于省,市,区联动 java 实现方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關于省,市,區(qū)的三級聯(lián)動后臺的實現(xiàn)有兩種方式:

1:分三次請求各自取出 省 市 區(qū) 的數(shù)據(jù);

2:一次請求獲得所有的數(shù)據(jù),并且組裝成相依的數(shù)據(jù)結構到前端;

其中第一種方式:

會導致數(shù)據(jù)的延遲加載,出現(xiàn)的情況是 省 有數(shù)據(jù)了,市和區(qū)一級還沒有數(shù)據(jù),導致用戶的體驗不好;這種方式只有省一級的數(shù)據(jù)可以提前加載好,市和區(qū)一級的數(shù)據(jù)只用等到選中后才開始請求;

第二種實現(xiàn)方式:

1):查出省--->遍歷省,查出省下面的市--->遍歷市,查出市下面的區(qū):組好相應的數(shù)據(jù)結構;這種方式的缺點:多次查詢數(shù)據(jù)庫,市和區(qū)的數(shù)據(jù)有多少條

就會查詢多少次數(shù)據(jù)庫,這樣效率很低,在不加緩存的情況下這種的查詢中國下所有的省市區(qū)需要的時間為:18s左右

//根據(jù)id查找出最頂層對象TbTreeExample example=new TbTreeExample();example.createCriteria().andIdEqualTo(id);TbTree tree = tbTreeMapper.selectByExample(example).get(0);//查找所有的省份 TbTreeExample provinceExample=new TbTreeExample(); provinceExample.createCriteria().andPIdEqualTo(id); List<TbTree> provinces = tbTreeMapper.selectByExample(provinceExample); for (TbTree province : provinces) { //查找所有的市 TbTreeExample cityExample=new TbTreeExample(); cityExample.createCriteria().andPIdEqualTo(province.getId()); List<TbTree> cities = tbTreeMapper.selectByExample(cityExample); for (TbTree city : cities) { //查找所有的區(qū) TbTreeExample districtExample=new TbTreeExample(); districtExample.createCriteria().andPIdEqualTo(city.getId()); List<TbTree> districts = tbTreeMapper.selectByExample(districtExample); city.setNodes(districts); } province.setNodes(cities); } tree.setNodes(provinces); return tree;

2):一次性查出省市區(qū)所有的數(shù)據(jù),然后在內存中組成相應的結構給到前臺:

這種方式在沒有緩存的情況下查詢的時間為:0.7-0.8s左右;

代碼如下:

TbTreeExample example=new TbTreeExample();List<TbTree> trees = tbTreeMapper.selectByExample(example);for (TbTree country : trees) {if(country.getId()==id){ //獲取省 for(TbTree province : trees){ if(province.getpId()==country.getId()){ //獲取市 for (TbTree city : trees) { if(city.getpId()==province.getId()){ //獲取區(qū) for (TbTree district : trees) { if(district.getpId()==city.getId()){ city.getNodes().add(district); } } province.getNodes().add(city); } } country.getNodes().add(province); } } return country; } } return null; }

當然我這里用的是遍歷的方式來實現(xiàn)這種方式,也可以用遞歸的方式來實現(xiàn)這種業(yè)務;

總結

以上是生活随笔為你收集整理的关于省,市,区联动 java 实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。