当前位置:网站首页>收货地址列表展示【项目 商城】
收货地址列表展示【项目 商城】
2022-06-11 10:58:00 【日星月云】
收货地址列表展示
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–收货地址列表展示
边栏推荐
- AI security and Privacy Forum issue 11 - stable learning: finding common ground between causal reasoning and machine learning
- 企业微信小程序避坑指南,欢迎补充。。。
- 装饰模式--小美的生日蛋糕
- Leetcode (Sword finger offer) - 10- ii Frog jumping on steps
- 5. read the specified pathname -dirname
- Iterator mode -- battlefield autumn point
- MWC 2022 lights up the future, and everything serves
- Metro roadmap cloud development applet source code and configuration tutorial
- Encrypt and decrypt strings using RSA and Base64
- MySQL下载安装使用-完整详细步骤
猜你喜欢

Cloud image quality assistant IAPP source code

杰理之获取 BLE OTA 双备份升级(只能用于 4Mbits 以上的芯片)【篇】

After 95, programmers in big factories were sentenced for deleting databases! Dissatisfied with the leaders because the project was taken over
![Jerry's acquisition of ble distinguishes between reset and wake-up [chapter]](/img/cb/e127628f20c36abe3287a175ae5948.png)
Jerry's acquisition of ble distinguishes between reset and wake-up [chapter]

Use pydub to modify the bit rate of the wav file, and an error is reported: c:\programdata\anaconda3\lib\site packages\pydub\utils py:170: RuntimeWarning:

International multilingual sea mall rebate product automatic matching order source code

MySQL optimized learning diary 10 - locking mechanism

An introduction to creating VOC datasets or Yolo datasets using labelimg

使用Yolov3训练自己制作数据集,快速上手

使用国产MCU(国民技术 N32G031F8S7) 实现 PWM+DMA 控制 WS2812
随机推荐
CAP理论听起来很高大上,其实很简单
Using ribbon to realize client load balancing
想做钢铁侠?听说很多大佬都是用它入门的
使用Yolov5训练自己制作的数据集,快速上手
数字藏品app小程序公众号源码
js设置ip屏蔽
985高校博士因文言文致谢走红!导师评价其不仅SCI写得好...
Why does a ddrx power supply design require a VTT power supply
White screen time, first screen time
SQL query statement optimization
string类的常见构造及容量操作
Distance measurement - Euclidean distance
SurroundDepth:自监督多摄像头环视深度估计
使用Yolov3训练自己制作数据集,快速上手
杰理之获取 BLE 查看代码异常复位等异常情况原因【篇】
Tu ne peux pas être libre sans richesse?
MySQL下载安装使用-完整详细步骤
Is the securities account opened by qiniu Gang safe and reliable?
小 P 周刊 Vol.08
使用Yolov5训练好模型调用电脑自带摄像头时出现问题:TypeError: argument of type “int‘ is not iterable的解决方法