数据库中省区市组装成json_java 数据库中获取省市级json数据

该博客展示了将数据库中省市县级联数据组装成JSON的代码。先从缓存获取数据,若没有则从数据库查询,将数据按省、市、县分类,再嵌套组装成层级结构的JSON数据,最后存入缓存并返回,若数据为空则抛出异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 /**

2 * 省市县级联json数据3 *4 *@return

5 */

6 @LogAndNotice("省市县级联json数据")7 public List>listArea() {8 List> resultFromCache = (List>) redisCacheService.9 getFromCache(BxqkTeachingConstant.PARAM_CACHE_PROVINCES);10 if(CollectionUtils.isNotEmpty(resultFromCache)) {11 returnresultFromCache;12 }13 List> result = new ArrayList<>();14 List> allList = this.myGeneralDao.getMapBySQL(15 " SELECT id value, name label, fk_parent_id parent, type FROM bxqk_pe_area " +

16 " ORDER BY CONVERT (NAME USING gbk) ASC ");17 if(CollectionUtils.isNotEmpty(allList)) {18 List> provinceList = newArrayList();19 List> cityList = newArrayList();20 List> countyList = newArrayList();21 allList.forEach(e ->{22 Map map = new HashMap<>(16);23 if(String.valueOf(e.get(BxqkTeachingConstant.PARAM_ADDRESS_TYPE))24 .equals(BxqkTeachingConstant.PARAM_PROVINCE_TYPE_CODE)) {25 provinceList.add(e);26 } else if(String.valueOf(e.get(BxqkTeachingConstant.PARAM_ADDRESS_TYPE))27 .equals(BxqkTeachingConstant.PARAM_CITY_TYPE_CODE)) {28 cityList.add(e);29 } else if(String.valueOf(e.get(BxqkTeachingConstant.PARAM_ADDRESS_TYPE))30 .equals(BxqkTeachingConstant.PARAM_COUNTY_TYPE_CODE)) {31 countyList.add(e);32 }33 });34 provinceList.forEach(e ->{35 Map provinceMap = new LinkedHashMap<>();36 provinceMap.put(BxqkTeachingConstant.PARAM_ADDRESS_VALUE,37 e.get(BxqkTeachingConstant.PARAM_ADDRESS_VALUE) + "," +e.get(BxqkTeachingConstant.PARAM_ADDRESS_TYPE));38 provinceMap.put(BxqkTeachingConstant.PARAM_ADDRESS_LABEL, e.get(BxqkTeachingConstant.PARAM_ADDRESS_LABEL));39

40 List> secondList = new ArrayList<>();41 cityList.forEach(c ->{42 if(String.valueOf(e.get(BxqkTeachingConstant.PARAM_ADDRESS_VALUE)).43 equals(String.valueOf(c.get(BxqkTeachingConstant.PARAM_ADDRESS_PARENT)))) {44 Map cityMap = new LinkedHashMap<>();45 cityMap.put(BxqkTeachingConstant.PARAM_ADDRESS_VALUE,46 c.get(BxqkTeachingConstant.PARAM_ADDRESS_VALUE) + "," +c.get(BxqkTeachingConstant.PARAM_ADDRESS_TYPE));47 cityMap.put(BxqkTeachingConstant.PARAM_ADDRESS_LABEL, c.get(BxqkTeachingConstant.PARAM_ADDRESS_LABEL));48

49 List> levelThreeList = new ArrayList<>();50 countyList.forEach(t ->{51 Map levelThreeMap = new LinkedHashMap<>();52 if(String.valueOf(c.get(BxqkTeachingConstant.PARAM_ADDRESS_VALUE)).53 equals(String.valueOf(t.get(BxqkTeachingConstant.PARAM_ADDRESS_PARENT)))) {54 levelThreeMap.put(BxqkTeachingConstant.PARAM_ADDRESS_VALUE,55 t.get(BxqkTeachingConstant.PARAM_ADDRESS_VALUE) + "," +t.get(BxqkTeachingConstant.PARAM_ADDRESS_TYPE));56 levelThreeMap.put(BxqkTeachingConstant.PARAM_ADDRESS_LABEL, t.get(BxqkTeachingConstant.PARAM_ADDRESS_LABEL));57 levelThreeList.add(levelThreeMap);58 }59 });60 if(CollectionUtils.isNotEmpty(levelThreeList)) {61 cityMap.put(BxqkTeachingConstant.PARAM_ADDRESS_CHILDREN, levelThreeList);62 }63 secondList.add(cityMap);64 }65 });66 provinceMap.put(BxqkTeachingConstant.PARAM_ADDRESS_CHILDREN, secondList);67 result.add(provinceMap);68 });69 redisCacheService.putToCache(BxqkTeachingConstant.PARAM_CACHE_PROVINCES, result);70 returnresult;71 } else{72 throw newParameterIllegalException(CommonConstant.PARAM_ERROR);73 }74 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值