收获地址列表展示 用户收货地址展示页面
持久层 规划执行的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>