获取省市区列表【项目 商城】

简介: 获取省市区列表【项目 商城】

获取省市区列表

1 获取省市区列表–数据库

create table `t_dict_district` (
  `id` int (11) NOT NULL AUTO_INCREMENT,
  `parent` varchar (6) DEFAULT NULL,
  `code` varchar (6) DEFAULT NULL,
  `name` varchar (16) DEFAULT NULL,
     PRIMARY KEY (`id`)
);
insert into `t_dict_district` (`id`, `parent`, `code`, `name`) values('1','110100','110101','东城区');
insert into `t_dict_district` (`id`, `parent`, `code`, `name`) values('2','110100','110102','西城区');
insert into `t_dict_district` (`id`, `parent`, `code`, `name`) values('3','110100','110103','崇文区');
insert into `t_dict_district` (`id`, `parent`, `code`, `name`) values('4','110100','110104','宣武区');
insert into `t_dict_district` (`id`, `parent`, `code`, `name`) values('5','110100','110105','朝阳区');

parent 属性表示父区域的代码号,省的父代码号+86。

t_dict_district.sql


2 获取省市区列表-实体类

创建个District实体类。

package com.cy.store.entity;
import java.io.Serializable;
import java.util.Objects;
/** 省/市/区数据的实体类 */
public class District implements Serializable {
    private Integer id;
    private String parent;
    private String code;
    private String name;

District


3 获取省市区列表-持久层

查询语句,根据父代号进行查询。

select * from t_dict_district where parent =? order by code ASC

抽象方法定义。

DistrictMapper

package com.cy.store.mapper;
import com.cy.store.entity.District;
import java.util.List;
public class DistrictMapper {
    /**
     * 根据父代号查询信息
     * @param parent 父代号
     * @return 某个父区域下的所有区域列表
     */
    List<District> findByParent(Integer parent);
}

DistrictMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.store.mapper.DistrictMapper">
    <!-- 获取全国所有省/某省所有市/某市所有区:List<District> findByParent(String parent) -->
    <select id="findByParent" resultType="com.cy.store.entity.District">
        SELECT * FROM t_dict_district WHERE parent=#{parent} ORDER BY code ASC
    </select>
</mapper>

DistrictMapper–findByParent


测试

 @Autowired
    private DistrictMapper districtMapper;
    @Test
    public void findByParent(){
        List<District> list = districtMapper.findByParent("110100");
        for (District d:list) {
            System.out.println(d);
        }
    }

master → origin/master


4 获取省市区列表-业务层

1.创建接口IDistrictService,并定义抽象方法。

package com.cy.store.service;
import com.cy.store.entity.District;
import java.util.List;
public interface IDistrictService {
    /**
     * 根据父代号来查询区域的信息(省市区)
     * @param parent 父代号
     * @return 多个区域信息
     */
    List<District> getParent(String parent);
}

2.创建DistrictServiceImpl实现类,实现抽象的方法。

package com.cy.store.service.impl;
import com.cy.store.entity.District;
import com.cy.store.mapper.DistrictMapper;
import com.cy.store.service.IDistrictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DistrictServiceImpl implements IDistrictService {
    @Autowired
    private DistrictMapper districtMapper;
    @Override
    public List<District> getParent(String parent) {
        List<District> list = districtMapper.findByParent(parent);
        /**
         * 在进行网络数据传输时,为了尽量避免无效的数据传递,可以将无效数据设置为null
         * 可以节省流量,另一方面提升了效率
         */
        for (District d:list) {
            d.setId(null);
            d.setParent(null);
        }
        return list;
    }
}

DistrictService–getParent


测试

package com.cy.store.service;
import com.cy.store.entity.Address;
import com.cy.store.entity.District;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.yaml.snakeyaml.events.Event;
import java.util.List;
//@SpringBootTest:表示标注当前的类是测试类,不会随同项目一块打包
@SpringBootTest
//@RunWith:表示启动这个单元测试类(单元测试类是不能够运行的),需要传递一个参数,必须是SpringRunner的实例类型
//@RunWith(SpringRunner.class)
public class DistrictServiceTests {
    @Autowired
    private IDistrictService districtService;
    @Test
    public void getParent(){
        List<District> list = districtService.getParent("86");
        for (District d : list) {
            System.err.println(d);
        }
    }
}


DistrictServiceTests–getParent


5 获取省市区列表-控制层

5.1 设计请求

/districts/
GET 
String parent
JsonResult<List<District>>

5.2 编写请求

创建一个类DistrictController类,在类中编写处理请求的方法。

package com.cy.store.controller;
import com.cy.store.entity.District;
import com.cy.store.service.IDistrictService;
import com.cy.store.util.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("districts")
public class DistrictController extends BaseController {
    @Autowired
    private IDistrictService districtService;
    //凡是districts开头的请求都被拦截到getByParent()方法
    @RequestMapping({"/",""})
    public JsonResult<List<District>> getByParent(String parent){
        List<District> data = districtService.getParent(parent);
        return new JsonResult<>(OK,data);
    }
}

LoginInterceptorConfigurer–districts


districts请求添加到白名单中

patterns.add("/districts/**");

测试

直接请求服务器,来访问进行测试

http://localhost:8080/districts?parent=86

http://localhost:8080/districts?parent=610000


6 获取省市区列表-前端页面

addAddress.html

1.注释掉通过js来完成的省市区列表的js代码

<!--    <script type="text/javascript" src="../js/distpicker.data.js"></script>-->
<!--    <script type="text/javascript" src="../js/distpicker.js"></script>-->

2.检查前端页面在提交省市区列表数据时是否有相关name属性和id属性。

3.运行前端看是否还可以正常保存数据(除了省市区之外)。

addAddress–js


测试


READ–获取省市区列表

相关文章
|
11月前
|
JSON API 开发者
淘宝获取购物车的商品列表 API接口
淘宝提供了获取购物车商品列表 API 接口,允许开发者通过编程方式获取用户购物车中的商品列表。这个 API 接口可以帮助开发者更好地了解用户在购物车中添加了哪些商品,以及每个商品的基本信息,例如商品 ID、名称、价格、数量等。
|
23天前
|
存储 JSON API
淘宝API接口实战:高效获取商品标题、分类及店铺名称
在淘宝API接口实战中,通过以下步骤高效获取商品标题、分类及店铺名称:1. 准备工作:了解淘宝开放平台文档,注册开发者账号,选择开发语言和工具。2. 获取API访问权限:申请相应权限,提供应用场景说明。3. 调用API接口:构建HTTP请求,提供必要参数。4. 解析响应数据:提取JSON数据中的所需信息。5. 数据处理和存储:进一步处理并存储数据。6. 注意事项:遵守使用规范,注意调用频率和数据安全。示例代码使用Python调用淘宝API。
|
2月前
|
SQL 设计模式 开发框架
谷粒商城笔记+踩坑(6)——商品服务-属性及其关联分组
商品规格属性和销售属性的增删改查、属性分组中查询新增关联的属性
谷粒商城笔记+踩坑(6)——商品服务-属性及其关联分组
|
5月前
|
前端开发 JavaScript Python
Django项目之电商购物商城 -- 新增收货地址
Django项目之电商购物商城 -- 新增收货地址
|
3月前
|
供应链 数据挖掘 Java
微店商品列表接口详解与实战应用
微店商品列表数据接口是专为开发者设计的API,允许调用微店店铺所有商品数据。接口(如micro.item_search_shop,具体名称需确认)提供商品ID、标题、价格等信息,支持商品展示、数据分析及库存管理等功能。开发者须在微店开放平台注册并创建应用获取API凭证,构建HTTP请求调用接口,处理返回的商品数据。此接口有助于优化购物体验,提供数据支持。[体验API:b.mrw.so/2Pv6Qu]
|
前端开发 测试技术
获取省市区的名称【项目 商城】
获取省市区的名称【项目 商城】
133 0
|
4月前
|
数据采集 API 开发者
当当网商品列表数据采集丨当当网商品列表数据接口
当当网商品列表数据接口提供商品数据(名称、价格等),开发者需注册并申请权限。流程包括注册账号、填写申请表、等待审核。接口参数含搜索关键字、分类ID、价格区间、排序方式等。支持HTTP POST/GET请求。可用于市场调研、商品管理和营销策略制定,确保合法合规使用。体验API: c0b.cc/R4rbK2.
|
开发者
【 uniapp - 黑马优购 | 购物车页面(1)】如何创建购物车编译模式、 商品列表区域实现
【 uniapp - 黑马优购 | 购物车页面(1)】如何创建购物车编译模式、 商品列表区域实现
263 0
|
SQL 存储 前端开发
显示购物车列表【项目 商城】
显示购物车列表【项目 商城】
128 0
|
SQL 前端开发
新增收货地址【项目 商城】
新增收货地址【项目 商城】
110 0
下一篇
无影云桌面