store(商城项目)Springboot+springmvc+ajax+mybatis(10)

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) 处理请求

45. 收货地址-显示列表-前端页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭九钦vlog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值