zoukankan      html  css  js  c++  java
  • Spring/SpringMVC/MyBatis(持久层、业务层、控制层思路小结)

    准备工作:
    ## 7 导入省市区数据到数据库中
    1. 从FTP下载SQL脚本文件
    2. 把脚本文件移动到易于描述绝对路径的位置
    3. 进入MySQL控制台
    4. use  `xxx_xxx`  数据库
    5. 运行`source e: _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);
    然后,在`resourcesmappers\`下创建(复制粘贴再修改)`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不是的(找个代码看看)。
     
     
     
    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    percona_xtrabackup
    利用java实现的一个发送手机短信的小例子
    使用mybatis执行oracle存储过程
    oracle 存储过程 基础
    oracle存储过程常用技巧
    oracle存储过程、声明变量、for循环|转|
    Oracle 存储过程
    mybatis 调用存储过程 返回游标 实例
    Spring Aop实例
    Struts2之自定义类型转换器
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/9563476.html
Copyright © 2011-2022 走看看