Spring/SpringMVC/MyBatis(持久層、業務層、控制層思路小結)


准備工作:
## 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不是的( 找個代碼看看)。
 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM