收货地址列表展示【项目 商城】

本文详细介绍了如何实现项目商城中收货地址列表的展示,包括持久层的SQL查询、业务层接口与抽象方法的实现、控制器的请求处理以及前端页面的数据展示。在后端,通过Mapper接口完成地址数据的查询,并在业务层进行数据处理,控制器接收HTTP请求并返回JSON结果。前端使用AJAX获取数据并动态渲染表格,展示了完整的用户收货地址列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

收货地址列表展示

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–收货地址列表展示


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

日星月云

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

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

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

打赏作者

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

抵扣说明:

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

余额充值