標籤:案頭 代碼 思想 欄位 練習 聲明 mys ice 相同
準備工作:## 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不是的(
找個代碼看看)。
spring/springMVC/mybatis(持久層、業務層、控制層思路小結)