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

基于Java+SpringBoot+Vue前后端分离电商项目【小米商城】 基于Java+SpringBoot+Vue前后端分离电商项目 阅读详情

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

 

 

 

【JavaEE】电商秒杀项目·第3章·用户模块开发 前言 不要忘记我这次重看视频的初衷可是要整一个Android借助本地MySQL进行登录注册的功能 第3章·用户模块开发的基本流程: 整体架构分层—>用户信息分层处理 —> 封装返回信息 —> otp手机验证码开发 —> 前端页面开发—>登录注册功能开发 上一章,我们学会了: 构建Maven项目 引入SpringBoot 引入Mybatis 简单使用SpringM... 阅读详情

相关推荐

【JavaEE】电商秒杀项目·第2章·基础项目搭建

前言 我想整一个Android借助本地MySQL进行登录注册的功能, 奈何搜遍全网,都没看见多好的资源。 好在我是龙虾三少的关门弟子୧(๑•̀◡•́๑)૭ (哇,好厉害啊,关门弟子哎!(o)/~) 没错,我每次听他课都会把宿舍门关上O(∩_∩)O (……-_-||……) 我又看了一遍龙虾三少的《Java电商秒杀系统》 现记录一下,原因是视频时间有点长,保存成文字+截图或许会节省一点时间,防止再次...

midnight_time的博客 4477

【Mybatis】接口式编程连接mysql数据库

本文已参与「新人创作礼」活动,一起开启掘金创作之路。接着肯定要创建mysql数据库博主命名新数据库为mybatis再接着自然是要打开我们得mybatis数据库去创建表和设计表了 设计表时将id设置为主键,便于后续操作链接: pan.baidu.com/s/1bqTLWmes… 提取码: ty85cloud.189.cn/t/mqym22ZnQ…链接: pan.baidu.com/s/1r-qfdPF1… 提取码: rw24cloud.189.cn/t/mQfIzizua… 3.在src中新建lib文件夹来配

jjc4261的博客 614

【电商项目实战】基于SpringBoot完成首页搭建

"探索电商项目成功的关键因素!了解如何选择适合的技术方案、建立强大的供应链网络和提供个性化的用户体验来增加销售量。本文将深入讨论电商行业的市场趋势,并分享实用的策略与案例分析。无论是初创企业还是已经运营的电商平台,都能从中获得宝贵的经验和启示。

万维网连五洲,二进制写尽天下事,喜欢结识新伙伴寻找志同道合的朋友,欢迎一起探讨学习 2666

springboot毕设项目基于的童车销售平台ms1r5(java+VUE+Mybatis+Maven+Mysql)

Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。springboot毕设项目基于的童车销售平台ms1r5(java+VUE+Mybatis+Maven+Mysql)Springboot + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。...

计算机程序设计 4558

【花艺电商】SpringBoot集成MyBatis-Plus、Swagger2、SpringSecurity、OAuth2等技术整合开发

这个项目主要使用了和等技术,实现了用户登录、购物车、订单生成、支付等功能,并使用了模板引擎搭建了前端页面。:我们使用了Spring Security来处理用户的登录验证和权限控制。用户在登录时,Spring Security会对用户的用户名和密码进行验证,验证通过后,会生成一个包含用户信息和权限的安全上下文,用于后续的权限控制。:我们集成了MyBatis-Plus,它提供了丰富的CRUD操作,可以方便地对数据库进行操作。

SAME_LOVE的博客 1533

springboot+mybatis+bootstrap商城系统

m:hanxunhx

Springboot+MyBatis企业级RESTful API开发项目实战/java视频教程

课程简介这是一门使用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章:增强和重构项目,课程总结,后续学习计划

SpringBoot三层架构Demo

本项目下载后,直接在IDE中导入,由于是Maven项目,所以你本地要有Maven环境,要不然下载不了Jar包

SpringBoot+MyBatis+MySql从头到尾完成一个电商项目(二、项目配置)

1、首先在码云上新建一个分支,企业级的开发在完成具体的每一个模块时都是在不同的分支上开发的,这儿我们也按照企业级的模式进行开发,新建分支截图如下: 2、在idea本地将分支切换到我们刚才新建上分支上,分别使用下面的Git命令: (1):git pull //本地拉取线上分支,效果如下: (2):git checkout mybatis-config...

MagicMHD的博客 3922

java设计--基于springboot电商订单管理.zip

系统采用springboot技术,开发工具使用Eclipse/Myeclipse,数据库采用Mysql,服务器使用tomcat8。毕设或者期末系统,可以参考使用。

springboot电商秒杀项目源码+springboot案例

springboot电商秒杀项目源码+springboot案例

SpringBoot+MyBatis+MySql从头到尾完成一个电商项目(五、用户注册、登录)

1、码云新建一个分支user-register 2、用户获取短信验证码otp的接口编写: 首先在UserController中注入HttpServletRequest这样我们可以拿到Session 然后写接口如下: 然后启动程序进行测试结果如下: 再看一下我们的控制台打印出来了电话和验证码,这里只是测试,正规的企业开发不能暴漏用户的验证码!! 3、下面我们通过前后端分离...

MagicMHD的博客 2809

如何设计一个低代码平台

近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢?

Jarod_Chou的博客 8256

SpringBoot+MyBatis+MySql从头到尾完成一个电商项目(一、新建项目并托管到码云Git)

前言:这一段时间准备写一个基于SpringBoot+MyBatis的电商项目的从头到尾的项目,一方面使自己的代码码风更优雅,更健壮,另一方面,希望可以帮到需要这方面知识的人!非常适合有一定的SpringBoot基础,但是想做一个小项目的童鞋,废话少说,开始吧!!! 1、在idea上新建一个springboot项目,我这里新建了一个名字叫shopping的项目,项目截图如下: 2、在码云上新...

MagicMHD的博客 1598

自动驾驶仿真(六)—— SIL软件在环仿真测试

自动驾驶仿真六—— SIL软件在环仿真测试1. 在环仿真测试2. SIL软件在环仿真测试2.1 模型配置参数2.2 S function生成实现2.3 结果对比3. 参考学习的书目教材 博主前面的博文已经简要介绍了Carsim、Prescan 与 Simulink 在 “V”型开发流程的一些应用,现今成熟的汽车控制系统软件都是以(Model Based Design,MBD)来开发,它以图形化的方式表达复杂的逻辑、代码可读性、可移植性、开发调试便利程度都大大增强,同时利用成熟的代码生成工具链,也避免了手工代

zhudj08的博客 8649

LangChain学习及应用(超详细)

Model I/O 部分是与语言模型进行交互的核心组件,包括输入提示(Prompt Template)、调用模型(Model)、输出解析(Output Parser)。简单来说,就是输入、处理、输出这三个步骤。LLM 因其具有海量参数,需要花费相当的物力与时间成本进行预训练和微调,同时商用 LLM 还需要进行各种安全测试与风险评估等。因此 LLM 会存在知识滞后的问题。在专有领域,LLM 无法学习到所有的专业知识细节,因此在面向专业领域知识的提问时,无法给出可靠准确的回答。

weixin_39764056的博客 4233

【项目实战】基于 springboot + mybatis + mysql 的电脑商城项目(附源码)

java项目||springboot项目||免费获取|| pagehelper分页、md5加密更多详情可以下载后查看 一、项目介绍 1.项目技术 2.项目数据库 3.项目截图及说明 首页及购物车模块 用户模块 登录及注册模块 二、代码部分 1.application.properties 2.UserController 3. 单元测试 三、注意事项 1.修改路径 2.分页数据设置 四、源码链接...

才下眉头n.的博客 7222

《python神经网络编程》程序实现

《python神经网络编程》程序实现 通过对这本书的学习,结合这本书的内容: 完成了以下代码: 其中NN.py实现了一个类,这个类可以完成神经网络的初始化,训练以及输入数据并得出结果。 而run.py则是对神经网络类的使用 NN.py: import numpy import scipy.special #神经网络类的实现 class neuralNetwork: #构造函数初始化类 def __init__(self,inputnodes,hiddennodes,outputnodes

ms8617484的博客 619

SpringBoot+MyBatis+MySql从头到尾完成一个电商项目(四、通用返回对象的编写)

企业级接口的返回对象一般都是status+data的形式,即接口是否返回成功,以及接口返回的数据是什么,这里我们来定义一下通用的通用对象返回的格式。 1、首先在码云新建一个分支,common-api,然后在本地拉取代码,这部分内容前面讲过,这里就省略了。 2、我们新建一个package名字为response,包下面新建一个CommonReturnType的类,用来定义通用返回对象。如下图: ...

MagicMHD的博客 1554

Argoverse2数据集保姆级导入教程:从下载到预处理全流程解析

本文详细解析了Argoverse2数据集的完整导入流程,从环境配置、数据下载到预处理和高效加载策略。作为自动驾驶领域的标杆数据集,Argoverse2提供多模态传感器数据和高精地图信息,帮助研究者快速搭建数据处理流水线。文章包含实用代码示例和性能优化技巧,特别适合自动驾驶算法开发者参考。

weixin_29035405的博客 332

Stata新手避坑:用reghdfe搞定行业、地区多重固定效应,告别‘共线性’报错

本文详细介绍了如何使用Stata中的reghdfe命令高效处理多重固定效应问题,解决传统方法在面板回归中遇到的共线性报错和低R²问题。通过实战案例和高级技巧,帮助新手快速掌握行业、地区等多维固定效应的控制方法,提升经济学和金融学研究的分析效率。

weixin_30635053的博客 419

Spring Boot + MyBatis Plus + MySQL电商项目 (一):项目简介

教程目录 Spring Boot + MyBatis Plus + MySQL电商项目 (一):项目简介 Spring Boot + MyBatis Plus + MySQL电商项目 (二):系统环境搭建 Spring Boot + MyBatis Plus + MySQL电商项目 (三):搭建静态页面 Spring Boot + MyBatis Plus + MySQL电商项目 (四):前后端数据对接 Spring Boot + MyBatis Plus + MySQL电商项目 (五):用户注册 Spri

wenqi 1616

【通信协议】GATT 与 BLE HID 工作原理详解

详细介绍BLE HID 跟GATT工作原理与两者的交互关系

以实战经验介绍行业知识 843

SpringBoot + MyBatis终极整合方案:电商项目实战演练

在当今数字化的时代,电商行业蓬勃发展,开发一个高效、稳定的电商系统是众多开发者面临的重要任务。Spring Boot 作为一款简化 Spring 应用开发的框架,与 MyBatis 这个优秀的持久层框架相结合,能够大大提高开发效率,减少开发成本。本文将通过一个电商项目的实战演练,详细介绍 Spring Boot 与 MyBatis 的终极整合方案。

梵心白莲的博客 936

华为OD机试 - 最快到达医院的方法(Python/JS/C/C++ 2024 E卷 100分)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2167

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

尚硅谷电商毕设项目

微服务入门项目练习!本次课程技术全面【springboot、mybatis-plus、微服务全家桶、缓存、异步消息、搜索等技术栈】,功能齐全【销售前端和后台管理功能】B2C模式电商项目,包含完整的销售前台和电商管理后台!前台部分主要通过浏览器访问,用户可以登录,浏览商品,以及添加购物车和订单生成等功能,完成购物车!后台部分主要管理员登录,对前台用户,类别,商品以及订单等数据维护!创建一个通用服务,用于存放pojo,vo,param,utils,feign的接口,以及通用配置类和配置文件!

born_thisway的博客 4439

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: SpringBoot+MyBatis+MySql从头到尾完成一个电商项目(二、项目配置)
下一篇: SpringBoot+MyBatis+MySql从头到尾完成一个电商项目(四、通用返回对象的编写)
MagicMHD
博客等级 码龄9年 503粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值