准備工作:
## 7 導入省市區數據到數據庫中
1. 從FTP下載SQL腳本文件
2. 把腳本文件移動到易於描述絕對路徑的位置
3. 進入MySQL控制台
4. use `xxx_xxx` 數據庫
5. 運行`source e:\t_dict.sql`以執行該腳本文件 ( linux下的命令是 source /home/soft01/桌面/t_dict.sql;)
-------------------------------------------------------------------------------------------
## 獲取省市區數據
### 目標
獲取所有省的列表
根據省的代號,獲取省的信息
獲取某個省的所有市的列表
根據市的代號,獲取市的信息
獲取某個市的所有區的列表
根據區的代號,獲取區的信息
------------------------------------------------------------------------------------------
###
創建實體類(分析前端頁面,並依照數據庫中各個表的字段寫相應的實體類)
在`cn.zjtj.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.zjtj.store.mapper.ProvinceMapper`接口,添加抽象方法:
/** * 獲取所有省的列表 */ List<Province> getProvinceList(); /** * 根據省的代號,獲取省的信息 */ Province getProvinceByCode(String provinceCode);
然后,在`resources\mappers\`下創建(復制粘貼再修改)`ProvinceMapper.xml`映射文件:
<mapper namespace="cn.zjtj.store.mapper.ProvinceMapper"> <!-- 獲取所有省的列表 --> <!-- List<Province> getProvinceList() --> <select id="getProvinceList" resultType="cn.zjtj.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.zjtj.store.entity.Province"> SELECT id, province_code AS code, province_name AS name FROM t_dict_provinces WHERE province_code=#{provinceCode} </select> </mapper>
###
業務層
以處理省的信息為例,先創建對應的業務接口`cn.zjtj.store.service.IProvinceService`,並添加與持久層接口中相同的抽象方法:
/** * 獲取所有省的列表 */ List<Province> getProvinceList(); /** * 根據省的代號,獲取省的信息 */ Province getProvinceByCode(String provinceCode);
創建`cn.zjtj.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不是的( 找個代碼看看)。
POST請求表單提交,json的應用( 看之前的代碼) ,一般要加方法體
get請求的提交的數據量較小
POST請求的數據一般無限制
get把很多信息暴露了,如id等,所以不太安全,相比post請求而言。
get請求便於收藏 ,因為它具體到某一個網頁,而post不是的( 找個代碼看看)。