SpringBoot+MyBatis+MySql从头到尾完成一个电商项目(三、用户模块开发之第一个接口的开发)

本文介绍了使用SpringBoot、MyBatis和MySql开发电商项目用户模块的第一个接口过程,包括项目结构、RESTFUL接口流程、Controller、Service、DAO和Mapper的交互。详细阐述了Model、DTO、VO的区别,并通过实例展示了如何处理用户密码的敏感信息,避免直接暴露给前端,确保数据安全。

1、首先我们完善我们的项目结构如下图:

这里我们要注意以下dataobject(dto)和model、dao和viewobject(vo)层的区别:

Model层是面向业务的,我们是通过业务来定义Model的,dao层对应于数据库中存储的数据(数据表),VO对应于页面上需要显示的数据(表单),dto是用于数据传输的,说白了就是用来放数据的,不用它来涉及逻辑操作。关于这几个领域模型的实体类我会通过一个具体的接口来展示他们的功能。

2、下面我们来梳理以下书写RESTFUL风格的接口时的流程:

就按MVC模式的开发模式来,我们项目中包含的结构层分别是view,controller,service,dao。

view是前台页面,用户发送请求时从前端的页面开始的,前端get到这个请求后会把请求和顺带参数信息传送到后台,后台接受这个请求找到对应的接口去执行对应的controller里的对应的方法,然后执行,然后controller会调用service层的业务逻辑,service有会去访问dao层来连接数据库。

    Controller层,这里以UserController编写为例,这一层是要把具体的信息返回给前端的,要调用Service里面的接口拿取数据返回给前端,具体编写如下:

这里我们自动注入了UserService,然后调用了它的getUserById方法,通过指定id获取用户信息并通过UserModel返回给前端(其实这样时不符合企业级应用开发规范的,),下面我们来看一下UserService里面的getUserById方法。

       Service层:这里以UserService为例:

Service层我们一般只写接口方法,具体的逻辑实现放到ServiceImpl里面实现。下面我们去ServiceImpl里面看一下具体的实现。

     ServiceImpl层:这里以UserServiceImpl为例:

我们来分析一下这几段代码:

首先我们注入了dao层中的UserDOMapper和UserPasswordDOMapper,是我们用mybatis逆向工程生成的mapper层,mapper,其实就是dao层。对数据库进行数据持久化操作,它的方法语句是直接针对数据库操作的。

例如我们来看一下UserDOMapper中的代码,这里面都是一些增删改查的方法:

再回到我们的UserServiceImpl,在这里我们实现了UserService里面的方法 getUserById,我们看一下这个方法:

首先通过userDOMapper的方法根据id获取用户信息UserDO。现在我们来考虑一下如何将用户信息表的用户密码表相互关联。其实我们在设计表的时候已经将他们关联了,在用户密码表我们设计了一个user_id的字段:

现在我们可以通过用户id来获取用户的密码信息,但是我们来看一下userPasswordDOMpper里面的方法:

这里面查询的方法只有通过PrimaryKey查询,即只有通过表的主键ID进行查询,没有通过用户id进行查询用户密码的方法,不要着急,我们可以自己去写这个方法!打开UserPasswordDOMapper.xml文件找到如下SQL:

我们完全可以根据这个SQL重新写一个根据用户ID查询用户信息的语句如下:

写完这个SQL以后记得去dao层的UserPasswordDOMapper里面实现这个方法如下:

 

这样我们就可以通过userDO的getId方法获取用户的userId,再通过userPasswordDOMpper的方法通过用户id获取用户密码。

现在我们得到了UserDO和UserPasswordDO,这是数据传输层数据,我们要把他们转换成逻辑层Model数据。

这个方法就是将DO数据转换为Model数据的:

使用了Java自带的BeanUtils方法先将UserDO里面的数据copy到UserModel中,另外UserDo里面是没有密码信息的,这里单独将密码信息通过userModel.setEncrptPassword放入Model中,密码的具体获取通过userPasswordDO.getEncrptPassword()。

最后ServiceImpl将Model数据返回。

这是一个接口的完整编写流程,综合业务逻辑为:

Controller-->service接口-->serviceImpl-->dao-->mapper-->db。

再直白一些说就是:

Controller接收前端的参数告诉Service我要增加用户或者删除用户,并且要返回给前端结果;

Service:负责处理增加或者删除用户的逻辑,一般通过ServiceImpl实现

Dao层:负责把service交代的东西真正的删掉,即在数据库中删除。

下面我们测试我们写的这个接口,启动程序。

启动成功,进入网页测试一下接口:

OK,这个接口测试成功!

接口是测试成功了,但是现在我们来想一下更深层次的东西,前端直接拿到了用户的密码,如果你是用户,你乐意吗?所以这样直接把Model层直接返回给前端对系统用户来说是极度不负责的!下面我们要改进这一块!

首先我们在controller包下面新建一个viewobject包,并且在这个包下面新建一个UserVO类如下图:

这里我们只将前端需要的信息返回给它,不需要的或者敏感的信息不再返回。

下面再去Controller层改写一下返回给前端的数据:

这里我们将最后返回给前端的数据换成了我们刚才定义的UserVO,这样用户的密码等信息就不会返回给前端了,下面我们来测试一下:

启动程序,然后在网页上登录接口:

经过测试,密码信息没有返回给前端,满足了我们的要求!

这样,一个健壮的优雅的接口我们就写好了!!!

这一部分就先到这儿,下一部分我们会定义一下通用的接口返回对象和编写用户模块开发的剩余接口!

记得将我们这一部分写的代码提交一下:

   git add  .

git commit -m 'user_develop'

git push

 

 

 

课程简介这是一门使用Java语言,SpringBoot框架,从0开发一个RESTful API应用,接近企业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识,99%代码为手写;因为这是项目课程;所以不会深入到源码讲解某个知识点,以及原理,但会粗略的讲解下基础原理;主要是讲解如何使用系统功能,流行的第方框架,第方服务,完成接近企业级项目,目的是让大家,学到真正的企业级项目开发技术。适用人群刚刚毕业的学生想提高职场竞争力想学从零开发SpringBoot项目想提升SpringBoot项目开发技术想学习SpringBoot项目架构技术想学习企业级项目开发技术就是想学习SpringBoot开发能学到什么从0开发一个类似企业级项目学会能做出市面上90%通用API快速增加1到2年实际开发经验刚毕业学完后能找到满意的工作已经工作学完后最高涨薪30%课程信息全课程目前是82章,155小时,每节视频都经过精心剪辑。在线学习分辨率最高1080P课程知识点1~11章:学习方法,项目架构,编码规范,Postman使用方法,Git和Github版本控制12~16章:搭建开发环境,快速入门SpringBoot框架17~20章:快速入门MySQL数据库21~30章:MyBatis,登录注册,找回密码,发送短信,发送邮件,企业级接口配置31~41章:实现歌单,歌单标签,音乐,列表分页,视频,评论,好友功能42~48章:阿里云OSS,话题,MyBatis-plus,应用监控49~53章:Redis使用,集成Redis,SpringCache,HTTP缓存54~58章:Elasticsearch使用,集成Elasticsearch,使用ES搜索59~61章:商城,集成支付宝SDK,支付宝支付62~64章:常用哈希和加密算法,接口加密和签名65~67章:实时挤掉用户,企业级项目测试环境,企业级接口文档68~69章:SpringBoot全站HTTPS,自签证书,申请免费证书70~73章:云MySQL数据库,云Redis数据库使用,轻量级应用部署环境,域名解析74~80章:Docker使用,生产级Kubernetes集群,域名解析,集群全站HTTPS81~82章:增强和重构项目,课程总结,后续学习计划
当前课程中商城项目的实战源码是我发布在 GitHub 上的开源项目 newbee-mall (新蜂商城),目前已有 9900 多个 Star,本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第个部分是 Spring Boot 商城项目功能的讲解,让大家实际操作并实践上手一个大型的线上商城项目,并学习到一定的开发经验以及其中的开发技巧。商城项目所涉及的功能结构图整理如下: 作者寄语本课程录制于2019年,距今已有一段时间。期间,Spring Boot技术栈也有一些版本升级,比如Spring Boot 2.7.x发版、Spring Boot 3.x版本正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。新蜂商城的优化和迭代工作不会停止,不仅仅是功能的优化,在技术栈上也会不断的增加,截止2023年,新蜂商城已经发布了 7 个重要的版本,版本记录及开发计划如下图所示。 课程特色 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目最终的实战项目一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择实践项目页面美观且实用,交互效果完美教程详细开发教程详细完整、文档资源齐全代码+讲解+演示网站全方位保证,向 Hello World 教程说拜拜技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,可以进一步提升你的市场竞争力 课程预览 以下为商城项目的页面和功能展示,分别为:商城首页 1商城首页 2购物车订单结算订单列表支付页面后台管理系统登录页商品管理商品编辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值