1.持久层
1.1数据库查询操作
select * from t_address where uid=? order by is_default DESC,created_time DESC
1.2 接口和抽象方法
/**
* 根据用户id查询用户的收货地址数据
* @param uid 用户id
* @return 收货地址数据
*/
List<Address> findByUid(String uid);
1.3 在xml文件中添加对应sql语句映射
<select id="findByUid" resultMap="AddressEntityMap">
select * from t_address where uid=#{uid}
order by id_default DESC,created_time DESC
</select>
1.4 单元测试
@Test
public void findByUid(){
List<Address> list = addressMapper.findByUid(9);
System.out.println(list);
}
2 业务层
2.1 异常
不用抛出相关的异常,不需要进行异常的设计。
2.2 设计业务层的接口和抽象方法
List<Address> getByUid(Integer uid);
2.3 需要在实现类中实现此方法的逻辑
@Override
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.setTel(null);
address.setIsDefault(null);
address.setCreatedTime(null);
address.setCreatedUser(null);
address.setModifiedTime(null);
address.setModifiedUser(null);
}
return list;
}
2.3 单元测试
单元测试暂时省略
3 控制层
3.1请求设计
/addresses
HttpSession session
GET
JsonResult<Address>
3.2 实现请求方法的实现
@RequestMapping({"/",""})
public JsonResult<List<Address>> getByUid(HttpSession session){
Integer uid = getUidFromSession(session);
List<Address> data = addressService.getByUid(uid);
return new JsonResult<>(OK,data);
}
3.3测试
先登陆,再进行访问请求地址进行数据的测试。
4 前端页面
在address.html页面中编写查询用户收货地址数据的展示列表。
<script type="text/javascript">
$(document).ready(function () {
showAddressList();
});
//展示用户收货地址数据列表
function showAddressList(){
$.ajax({
url:"/addresses",
type:"GET",
dataType:"JSON",
success:function (json) {
if(json.state ==200){
let list=json.data;
console.log(list);
for (let i = 0; i < list.length; i++) {
//TODO
let tr='<tr>\n' +
'<td>#{tag}</td>\n' +
'<td>#{name}</td>\n' +
'<td>#{address}</td>\n' +
'<td>#{phone}</td>\n' +
'<td><a class="btn btn-xs btn-info"><span class="fa fa-edit"></span> 修改</a></td>\n' +
'<td><a class="btn btn-xs add-del btn-info"><span class="fa fa-trash-o"></span> 删除</a></td>\n' +
'<td><a class="btn btn-xs add-def btn-default">设为默认</a></td>\n' +
'</tr>';
tr=tr.replace(/#{tag}/g,list[i].tag);
tr=tr.replace(/#{name}/g,list[i].name);
tr=tr.replace("#{phone}",list[i].phone);
tr=tr.replace("#{address}",list[i].address);
$("#address-list").append(tr);
}
//将某个元素隐藏使用hide()方法
$(".add-def:eq(0)").hide();
}else{
alert("收货地址数据加载失败")
}
},
})
}
</script>