收获地址列表展示 用户收货地址展示页面
持久层 规划执行的SQL语句 用户收货地址页面展示,本质上是SQL查询语句,按照is_default字段进行排序,因为按照逻辑默认收货地址应该排在第一个;其余地址按照创建时间进行排序,最近创建的排在前面
1 select  *  from  t_address where  uid= ? order  by  is_default DESC ,created_time DESC ;
接口和抽象方法 在AddressMapper接口中定义抽象方法findByUid
1 2 3 4 5 6 List<Address> findByUid (Integer uid) ; 
SQL关系映射 在AddressMapper.xml文件中编写抽象方法对应的映射语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <resultMap  id ="addressPojoMap"  type ="com.bang.store.pojo.Address" >     <id  column ="uid"  property ="uid" />      <result  column ="province_name"  property ="provinceName" />      <result  column ="province_code"  property ="provinceCode" />      <result  column ="city_name"  property ="cityName" />      <result  column ="city_code"  property ="cityCode" />      <result  column ="area_name"  property ="areaName" />      <result  column ="area_code"  property ="areaCode" />      <result  column ="is_default"  property ="isDefault" />      <result  property ="createUser"  column ="create_user" />      <result  property ="createTime"  column ="create_time" />      <result  property ="modifiedUser"  column ="modified_user" />      <result  property ="modifiedTime"  column ="modified_time" />  </resultMap > <select  id ="findByUid"  resultMap ="addressPojoMap" >     select * from t_address where uid=#{uid} order by is_default DESC,created_time DESC; </select > 
单元测试 1 2 3 4 5 6 7 @Test public  void  findByUid () {    List<Address> addressList = addressMapper.findByUid(1 );     for  (Address address : addressList) {         System.out.println(address);     } } 
业务层 规划异常 无额外的异常发生
接口和抽象方法 在接口IAddressService中编写对应的抽象方法
1 2 3 4 5 6 List<Address> getByUid (Integer uid) ; 
抽象方法实现 在实现类实现对应的抽象方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 @Override public  List<Address> getByUid (Integer uid)  {    List<Address> addressList = addressMapper.findByUid(uid);                         for  (Address address : addressList) {         address.setAid(null );         address.setUid(null );         address.setProvinceCode(null );         address.setCityCode(null );         address.setAreaCode(null );         address.setTel(null );         address.setCreatedUser(null );         address.setCreatedTime(null );         address.setModifiedUser(null );         address.setModifiedTime(null );     }     return  addressList; } 
单元测试 1 2 3 4 5 6 7 @Test public  void  getByUid () {    List<Address> addressList = addressService.getByUid(1 );     for  (Address address : addressList) {         System.out.println(address);     } } 
控制层 异常处理 无新增异常
设计请求 1 2 3 4 request url: /address/get_ by_ uid request method: GET request params: HttpSession session response data: new JsonResult<List<Address>> 
处理请求 1 2 3 4 5 6 7 @RequestMapping("/get_by_uid") public  JsonResult<List<Address>> getByUid (HttpSession session) {         Integer  uid  =  getUidFromSession(session);     List<Address> addressList = addressService.getByUid(uid);     return  new  JsonResult <>(OK,"用户地址列表请求成功" ,addressList); } 
前端页面 一加载address.html页面,就向后端发送请求,获取当前用户的收货地址列表,并展示在页面对应位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <script>     $(document ).ready (function  (     $.ajax ({         url : "/address/get_by_uid"          ,type : "GET"          ,data : null          ,dataType : "JSON"          ,success : function  (data ){             if (data.state  == 200 ){                                                   $("#address-list" ).empty ();                 let  addressList = data.data ;                 for (let  i=0 ;i<addressList.length ;i++){                     let  trContent = "<tr>\n"  +                         "\t\t\t\t\t\t\t\t\t<td>" +addressList[i].tag +"</td>\n"  +                         "\t\t\t\t\t\t\t\t\t<td>" +addressList[i].name +"</td>\n"  +                         "\t\t\t\t\t\t\t\t\t<td>" +addressList[i].address +"</td>\n"  +                         "\t\t\t\t\t\t\t\t\t<td>" +addressList[i].phone +"</td>\n"  +                         "\t\t\t\t\t\t\t\t\t<td><a class=\"btn btn-xs btn-info\"><span class=\"fa fa-edit\"></span> 修改</a></td>\n"  +                         "\t\t\t\t\t\t\t\t\t<td><a class=\"btn btn-xs add-del btn-info\"><span class=\"fa fa-trash-o\"></span> 删除</a></td>\n"  +                         "\t\t\t\t\t\t\t\t\t<td><a class=\"btn btn-xs add-def btn-default\">设为默认</a></td>\n"  +                         "\t\t\t\t\t\t\t\t</tr>" ;                     $("#address-list" ).append (trContent);                 }                                                   $(".add-def:eq(0)" ).hide ();             }else {                 alert ("用户地址获取失败 " +data.message );             }         }         ,error :function  (xmh ){             alert ("用户地址获取过程中发生未知错误" +xmh.status );         }     }); }) </script>