准备工作:
## 7 导入省市区数据到数据库中
1. 从FTP下载SQL脚本文件
2. 把脚本文件移动到易于描述绝对路径的位置
3. 进入MySQL控制台
4. 使用`tedu_store`数据库
5. 运行`source e:\t_dict.sql`以执行该脚本文件 ( linux下的命令是 source /home/soft01/桌面/t_dict.sql;)
-------------------------------------------------------------------------------------------
## 获取省市区数据
### 目标
获取所有省的列表
根据省的代号,获取省的信息
获取某个省的所有市的列表
根据市的代号,获取市的信息
获取某个市的所有区的列表
根据区的代号,获取区的信息
------------------------------------------------------------------------------------------
### 创建实体类(分析前端页面,并依照数据库中各个表的字段写相应的实体类)
在`cn.tedu.store.entity`包中创建3个实体类:
public class Province { private Integer id; private String code; private String name; // 构造方法,SET/GET,toString,实现Serializable } public class City { private Integer id; private String provinceCode; private String code; private String name; // 构造方法,SET/GET,toString,实现Serializable } public class Area { private Integer id; private String cityCode; private String code; private String name; // 构造方法,SET/GET,toString,实现Serializable }
----------------------------------------------------------------------------------------------------------------------
### 持久层
创建`cn.tedu.store.mapper.ProvinceMapper`接口,添加抽象方法:
/** * 获取所有省的列表 */ List<Province> getProvinceList(); /** * 根据省的代号,获取省的信息 */ Province getProvinceByCode(String provinceCode);
然后,在`resources\mappers\`下创建(复制粘贴再修改)`ProvinceMapper.xml`映射文件:
<mapper namespace="cn.tedu.store.mapper.ProvinceMapper"> <!-- 获取所有省的列表 --> <!-- List<Province> getProvinceList() --> <select id="getProvinceList" resultType="cn.tedu.store.entity.Province"> SELECT id, province_code AS code, province_name AS name FROM t_dict_provinces </select> <!-- 根据省的代号,获取省的信息 --> <!-- Province getProvinceByCode(String provinceCode) --> <select id="getProvinceByCode" resultType="cn.tedu.store.entity.Province"> SELECT id, province_code AS code, province_name AS name FROM t_dict_provinces WHERE province_code=#{provinceCode} </select> </mapper>
### 业务层
以处理省的信息为例,先创建对应的业务接口`cn.tedu.store.service.IProvinceService`,并添加与持久层接口中相同的抽象方法:
/** * 获取所有省的列表 */ List<Province> getProvinceList(); /** * 根据省的代号,获取省的信息 */ Province getProvinceByCode(String provinceCode);
创建`cn.tedu.store.service.ProvinceServiceImpl`实现以上接口,并使用`@Service("provinceService")`注解,然后,在类中声明`@Autowired ProvinceMapper provinceMapper;`属性,然后,实现接口中的抽象方法:
public List<Province> getProvinceList() { return provinceMapper.getProvinceList(); } public Province getProvinceByCode(String provinceCode) { return provinceMapper.getProvinceByCode(provinceCode); }
### 控制器层
获取省的列表
请求路径:`/province/list.do`
请求参数:`无`
请求类型:`GET`
响应方式:`ResponseResult<List<Province>>`
根据省的代号,获取省的信息
请求路径:`/province/info.do`
请求参数:`code=110000`
请求类型:`GET`
响应方式:`ResponseResult<Province>`
获取某个省的市的列表
请求路径:`/city/list.do`
请求参数:`province_code=xx`
请求类型:`GET`
响应方式:`ResponseResult<List<City>>`
…… ……
(其实大体思路就是MVC思想 ,但还是有很多细节要注意,要多练习。)
-------------------------------------------------------------------------------------------
### POST请求与GET请求的区别(面试题)
GET常用于地址栏请求
POST请求表单提交,json的应用(看之前的代码) ,一般要加方法体
get请求的提交的数据量较小
POST请求的数据一般无限制
get把很多信息暴露了,如id等,所以不太安全,相比post请求而言。
get请求便于收藏 ,因为它具体到某一个网页,而post不是的(找个代码看看)。
原文地址:https://www.cnblogs.com/shijinglu2018/p/9563476.html