收货地址列表展示
1.持久层
规划查询SQL语句
1.数据库数据的查询操作
select * from t_address where uid=? order by is_default DESC,created_time DESC
2.接口与抽象方法
/** * 根据用户的id查询用户的收货地址数据 * @param uid 用户id * @return 收货地址数据 */ List<Address> findByUid(Integer uid);
3.在.xml文件中添加对应的SQL语句映射。
<select id="findByUid"> select * from t_address where uid=#{uid} order by is_default DESC,created_time DESC </select>
AddressMapper–findByUid
测试
4.完成单元测试方法。
@Test public void findByUid(){ List<Address> list = addressMapper.findByUid(8); System.out.println(list); }
2.业务层
1.不用抛出相关的异常,不用进行异常的设计
2.设计业务层的接口和抽象方法
List<Address> getByUid(Integer uid);
3.需要在实现类中实现此方法的逻辑
public List<Address> getByUid(Integer uid) { List<Address> list = addressMapper.findByUid(uid); for (Address address : list) { address.setAid(null); address.setUid(null); address.setProvinceCode(null); address.setCityCode(null); address.setAreaCode(null); address.setZip(null); address.setTel(null); address.setIsDefault(null); address.setCreatedUser(null); address.setCreatedTime(null); address.setModifiedUser(null); address.setModifiedTime(null); } return list; }
AddressService–getByUid
测试
4.单元测试暂时省略。
实现抽象方法
3.控制器
1.请求设计
/address HttpSession GET JsonResult<List<Address>>
2.实现请求方法的编写
@RequestMapping({"","/"}) public JsonResult<List<Address>> getByUid(HttpSession session){ Integer uid = getuidFromSession(session); List<Address> data = addressService.getByUid(uid); return new JsonResult<>(OK,data); }
AddressController–getByUid
测试
3.先登录,再访问请求的地址进行数据的测试。
前端页面
在address.html页面中编写查询用户收货地址数据的列表展示。
// <!--showAddressList--> $(document).ready(function () { showAddressList(); }); function showAddressList() { $("#address-list").empty(); $.ajax({ url: "/address", type: "GET", dataType: "JSON", success: function (json) { if (json.state==200) { let list = json.data; for (let i = 0; i < list.length; i++) { console.log(list[i].name); let tr = '<tr>' + '<td>#{tag}</td>' + '<td>#{name}</td>' + '<td>#{province}#{city}#{area}#{address}</td>' + '<td>#{phone}</td>' + '<td><a class="btn btn-xs btn-info"><span class="fa fa-edit"></span> 修改</a></td>' + '<td><a οnclick="deleteByAid(#{aid})" class="btn btn-xs add-del btn-info"><span class="fa fa-trash-o"></span> 删除</a></td>' + '<td><a οnclick="setDefault(#{aid})" class="btn btn-xs add-def btn-default">设为默认</a></td>' + '</tr>'; tr = tr.replace(/#{aid}/g, list[i].aid); tr = tr.replace(/#{tag}/g, list[i].tag); tr = tr.replace("#{name}", list[i].name); tr = tr.replace("#{province}", list[i].provinceName); tr = tr.replace("#{city}", list[i].cityName); tr = tr.replace("#{area}", list[i].areaName); tr = tr.replace("#{address}", list[i].address); tr = tr.replace("#{phone}", list[i].phone); $("#address-list").append(tr); } //将某个元素隐藏使用hide() $(".add-def:eq(0)").hide(); }else{ alert("用户收货地址加载失败") } } }); } // <!--showAddressList-->
address.html–showAddressList
测试
README–收货地址列表展示