苍穹外卖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删除地址

很简单不说了。。。

相关推荐
小羊没烦恼!2 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里2 天前
java中的继承和多态的区别
java
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕2 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖2 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时2 天前
01-06-A-JVM排查实战详解
java·jvm
这个DBA有点耶2 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
vipxieliang2 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
DBA_G2 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库