苍穹外卖Day09 地址簿模块

这一块比较简单就是一个表的增删改查,也不涉及别的知识,所以黑马就是带着我们导入了一下代码,所以这里做点简单的解释就过去了。

首先看下效果图:

简单来说包括以下几点功能:

1.查询当前登录用户的所有地址

2.查询当前登录用户的默认地址

3.新增地址

4.根据id查询地址

5.根据id查询地址

6.设置为默认地址

7.根据id删除地址

一、查询用户所有收货地址

接口文档如下:

显然这里我们需要新建一个AddressBookController这里的返回值应该新建一个VO对象如下所示:

之后就是本质就是一个根据用户ID查地址表的操作,由于用户可能不止一个收货地址所以查出来的是一个List,controller层代码如下:

当前用户的ID存在了threadlocal中,这里传入addressbook对象进行查找而不是只用一个id查,因为可以用动态SQL以后可以复用!

service层仅仅单纯调用了mapper层的查找所以这里直接放mapper层的代码:

多出的两个条件,一个是之后查询默认地址可以复用,还有一个是精确查找通过手机号!

二、查找用户默认收货地址

其实和上面基本一致,只不过我们在封装addressbook的时候还需要给它的属性is_default进行赋值

代码如下:

当前我们可能是没有默认地址的,所以需要判别一下。而且这里的默认地址由于只有一个所以用list.get(0)~~~

三、新增地址

通过以前的经验,应该是前端传过来一个关于地址的DTO对象,最后我们封装成addressbook对象进行SQL的插入。看看接口文档是否如此:

这里由于前端传过来的和addressbook字段一致,所以直接用addressbook接收,controller代码如下:

这里的service层有两行代码,如下所示:

一个是设置默认字段以及用户id,为什么要这么做原因如下:

mapper层就是一个简单的插入SQL:

四、根据id查地址

这里的id是addressbook表的id,为什么需要这个接口呢,因为我们修改地址的时候需要显示当前地址的信息,如图所示:

所以其实本质就是,最初我们有一个list接口帮助查出所有地址,这个时候前端就拿到了所有地址的id,之后再去点击修改,它会把这个id重新发回后端,我们就能准确到底需要修改的地址并且展示出来以及修改。

代码就很简单了就是一个根据id查询:

五、根据id修改地址

先看接口文档:

本质就是前端传过来一些参数,封装到addressbook中,利用动态SQL进行update

六、设置为默认地址

其实本质是一个update功能,但是由于默认地址只能有一个,当我们设置一个新地址为默认地址之后就需要将其他地址设置为非默认地址。

涉及的操作

1.首先将所有地址设为非默认

2.设置该id的地址为默认

由于是两个更新操作,并且要保持事务一致性,别忘了加transactional

七、根据id删除地址

很简单不说了。。。

相关推荐
XDHCOM20 小时前
ORA-32484重复列名错误,ORACLE数据库CYCLE子句故障修复与远程处理方案
数据库·oracle
云烟成雨TD20 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
于慨20 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
swg32132120 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
翻斗包菜20 小时前
PostgreSQL 日常维护完全指南:从基础操作到高级运维
运维·数据库·postgresql
gelald20 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
殷紫川20 小时前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
呆瑜nuage20 小时前
MySQL表约束详解:8大核心约束实战指南
数据库·mysql
一轮弯弯的明月21 小时前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得
chenjingming66621 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter