42. 收货地址-显示列表-持久层
(a) 规划所需要执行的SQL语句
显示某用户的收货地址列表,需要执行的SQL语句大致是:
select * from t_address where uid=? order by is_default desc, modified_time desc
(b) 接口与抽象方法
在AddressMapper
接口中添加抽象方法:
/**
* 查询某用户的收货地址列表
* @param uid 用户的id
* @return 该用户的收货地址列表
*/
List<Address> findByUid(Integer uid);
(c) 配置映射
在AddressMapper.xml中配置:
<resultMap id="AddressEntityMap"
type="cn.tedu.store.entity.Address">
<id column="aid" property="aid" />
<result column="province_code" property="provinceCode" />
<result column="province_name" property="provinceName" />
<result column="city_code" property="cityCode" />
<result column="city_name" property="cityName" />
<result column="area_code" property="areaCode" />
<result column="area_name" property="areaName" />
<result column="is_default" property="isDefault" />
<result column="created_user" property="createdUser" />
<result column="created_time" property="createdTime" />
<result column="modified_user" property="modifiedUser" />
<result column="modified_time" property="modifiedTime" />
</resultMap>
<!-- 查询某用户的收货地址列表 -->
<!-- List<Address> findByUid(Integer uid) -->
<select id="findByUid"
resultMap="AddressEntityMap">
SELECT
*
FROM
t_address
WHERE
uid=#{uid}
ORDER BY
is_default DESC, modified_time DESC
</select>
在AddressMapperTests
中测试:
@Test
public void findByUid() {
Integer uid = 18;
List<Address> list = mapper.findByUid(uid);
System.err.println("count=" + list.size());
for (Address item : list) {
System.err.println(item);
}
}
43. 收货地址-显示列表-业务层
(a) 规划可能出现的异常
无
(b) 业务接口及抽象方法
在IAddressService
中添加:
/**
* 查询某用户的收货地址列表
* @param uid 用户的id
* @return 该用户的收货地址列表
*/
List<Address> getByUid(Integer uid);
(c) 实现抽象方法
在AddressServiceImpl
中实现:
@Override
public List<Address> getByUid(Integer uid) {
List<Address> list = addressMapper.findByUid(uid);
for (Address address : list) {
address.setUid(null);
address.setProvinceCode(null);
address.setCityCode(null);
address.setAreaCode(null);
address.setIsDefault(null);
address.setCreatedUser(null);
address.setCreatedTime(null);
address.setModifiedUser(null);
address.setModifiedTime(null);
}
return list;
}
在AddressServiceTests
中测试:
@Test
public void getByUid() {
Integer uid = 18;
List<Address> list = service.getByUid(uid);
System.err.println("count=" + list.size());
for (Address item : list) {
System.err.println(item);
}
}
44. 收货地址-显示列表-控制器层
(a) 处理新创建的异常
(b) 设计所需要处理的请求
请求路径:
请求参数:
请求方式:
响应结果:JsonResult<?>
(c) 处理请求