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

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

企业级接口的返回对象一般都是status+data的形式,即接口是否返回成功,以及接口返回的数据是什么,这里我们来定义一下通用的通用对象返回的格式。

1、首先在码云新建一个分支,common-api,然后在本地拉取代码,这部分内容前面讲过,这里就省略了。

2、我们新建一个package名字为response,包下面新建一个CommonReturnType的类,用来定义通用返回对象。如下图:

下面我们来看一下这个CommonReturnType的内容:

//处理接口返回数据类型,使用status和data的格式返回数据
public class CommonReturnType {

    //请求结果,success和fail
    private String status;

    //若status=success,则data内返回前端需要的json数据
    //若status=fail,则data内使用通用的错误码格式
    private Object data;

    //定义一个通用的创建方法
    public static CommonReturnType creat(Object result){
        return CommonReturnType.creat(result,"success");
    }

    //使用了函数重载的方式做了一个构造方法
    public static CommonReturnType creat(Object result,String status){
        CommonReturnType type=new CommonReturnType();
        type.setStatus(status);
        type.setData(result);
        return type;
    }


    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

这个方法是说当Controller完成相应的逻辑以后调用creat方法,如果不带status参数米那就默认status的参数是“success”,然后创建了对应的CommonReturnType,并且把值返回。下面我们来看一下如何在Controller中使用这个CommonReturnTYpe。

3、使用CommonReturnType

由上图可知,我们在Controller中做了下面的改变:

我们不再返回UserVO对象,而是返回了一个通用的返回对象CommonReturnType,然后在最后返回的时候使用了return CommonReturnType.creat(userVO)的方法将UserVO对象返回,这里在使用creat方法时,没有加status方法,默认是返回成功“success”。现在我们可以来调试一把我们的程序:

这样我们返回给前端的数据格式就非常规范了,前端的人员也比较好拿到我们返回给他们的数据了。

4、下面我们做一下对异常的处理,即status为fail的时候的处理。

首先我们新建一个error的package,然后在这个包下面新建一个CommonError的接口如下图:

为什么我们要使用interface的形式,我待会会解释这一点,下面我们来看一下CommonError里面的内容:

我们定义了三个方法,分别为获取错误码,获取错误信息和设置错误信息。下面我们再新建一个枚举去实现这些方法如下图:

下面我们来定义一些常见的错误类型:

这里我们定义二零用户不存在和参数不合法两个错误类型,然后在下面的get、set方法中也要改变一下:

下面我们来看一下具体怎么使用这个通用的错误枚举!

5、我们采用抛出异常的形式使用这些通用错误的返回类型,首先新建一个BusinessException,并实现CommonError的方法如下图:

然后新建一个构造函数如下图:

最后改写相应的get、set方法如下:

我们的这种逻辑有一个专门的名字叫做包装器业务异常类实现,就是说BusinessException和我们刚才定义的EmBusinessError,都共同继承了CommonError的方法,使外部可以通过new一个BusinessException或者new一个EmBusinessError的形式都可以获得errorCode和errMsg的内容。说了那么多,下面我们来实践一下:

6、我们在Controller层中这样改变,然后抛出错误异常如下:

下面我们对抛出的异常做一下处理:

我们在controller包下面新建一个BaseController,把一些异常放入这里面如下图:

/**
 * @Author: MaHuadong
 * @Date: 2019/4/2 15:27
 * @Version 1.0
 * 把异常处理逻辑放到基类controller里面
 * 别的controller只需要继承BaseController即可
 */
public class BaseController {

    //定义Exceptionhandle解决未被controller层吸收的exception
    @ExceptionHandler(Exception.class)
    //即便controller抛出异常,我们捕获它然后正常返回200的值
    @ResponseStatus(HttpStatus.OK)
    //接收HttpServletRequest和异常Exception,只能返回一个页面路径,若想返回对象,则需要加上下面的注解
    @ResponseBody
    public Object handleException(HttpServletRequest request, Exception ex){

        Map<String, Object> responseData = new HashMap<>();
        //如果ex返回的是BusinessException,则把Exception强转为BusinessException
        if (ex instanceof BusinessException) {
            BusinessException businessException = (BusinessException) ex;

            //使用Map存放errCode和errMsg
            responseData.put("errCode", businessException.getErrorCode());
            responseData.put("errMsg", businessException.getErrorMsg());
        }else {
            //如果ex返回的是不BusinessException,则直接输出未知错误,我们需要去枚举里面再定义一个未知错误然后返回
            //使用Map存放errCode和errMsg
            responseData.put("errCode", EmBusinessError.UNKNOW_ERROR.getErrorCode());
            responseData.put("errMsg",EmBusinessError.UNKNOW_ERROR.getErrorMsg());
        }
        //使用构造函数返回data和status
        return CommonReturnType.creat(responseData,"fail");

    }
}

下面我们来测试一下,

上面我们在controller中加入上面的代码,我们能看到明显的逻辑错误,我们来看一下能返回什么错误:

这里按照我们在EmBusinessError中定义的位置错误:

再换个参数测试一下:

这里我们抛出一个用户不存在的异常,然后运行看一下:

也可以成功返回!说明咱们做的没问题!

到现在咱们的通用返回对象就已经编写完成了,并且测试成功了,现在咱们把代码提交一下,然后进行下一步的开发。

git add .

git commit -m 'common-api'

git push

然后再合并到主分支:

git checkout master

git merge origin/common-api

git push

好了,通用接口返回对象的编写就到这儿了,加油!

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

相关推荐

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

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

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

SpringBoot消费BmobAPI

在大部分的情况下,使用客户端开发时调用Bmob的服务是比较常见的,比如开发Android、iOS应用程序等等。这样做能够直接省去服务端开发该做的事情,一方面降低了开发成本,另一方面也提高了客户端开发的速度,对于开发人员来说真的是一树百获啊。 上面说的这些大家不要认为是在打广告或是写软文,其实纯粹就是一个普通使用者对一个产品使用后的真实感受的表达,如果你非要这样认为,就怪程序员不太会用社会语言写文...

weixin_34009794的博客 203

spring boot+mybatis开发java web网页版电子商城网站

## 功能模块 - 首页 1. 导航栏 2. 轮播图 3. 分栏推荐 - 搜索 1. 显示关键词搜到的产品 2. 能通过产品进入详情页 - 详情页 1. 显示商品详情 2. 多图画廊展示 3. 购物车 - 购物车 1. 显示加入购物车产品信息 - 登录注册 1. 实现登录注册功能 - 后台管理 1. 后台首页 2. 商品管理 3. 用户管理 ## 环境要求 - jdk1.8或更高版本 - apache-tomcat-7.0.78或更高版本 - mysql-5.6.24或更高版本 ## 部署说明 1. 创建数据库。使用MySQL,字符集选择为`utf8`或者`utf8mb4`(支持更多特殊字符,推荐)。 2. 创建数据库导入数据。数据库在`springBoot-Jsp\src\main\resources`目录下,参考数据脚本创建数据库。 3. 设置项目编码为utf-8,选择jdk1.7版本或以上,不要选择jre。 4. 修改数据库连接。打开`application.properties`文件,根据实际情况修改`jdbc.url`、`jdbc.user`、`jdbc.password`的值 5. 部署项目。将项目部署到Tomcat7或以上版本,启动Tomcat。 6. 访问系统。前台地址:[http://localhost:8080);用户名:admin,密码:123456,后台登录点击右下角小人,即可切换登录,进入后台管理。 lib包百度网盘下载地址 链接: https://pan.baidu.com/s/1-_woWC5WdvJxdwZ6yjzF6g 密码: tb7h

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章:增强和重构项目,课程总结,后续学习计划

基于SpingBoot开发的购物商城

这是一个包含基于springboot的maven工程开发的购物商城项目,功能齐全,包含购物流程。

spring boot+layui+spring mvc+mybatis+maven加载树型后台权限管理菜单

开发背景 maven :3.3.3 JDK : 1.8 Intellij IDEA : 2017.2.5 开发工具 spring boot :1.5.9.RELEASE mybatis 3.4.5 :dao层框架 pageHelper : 5.1.2 httpClient : 4.5.3 layui 2.2.3 :前端框架 shiro 1.4.0 :权限控制框架 druid 1.1.5 :druid连接池,监控数据库性能,记录SQL执行日志 thymeleaf :2.1.4.RELEASE,thymeleaf前端html页面模版 log4j2 2.7 :日志框架 EHCache : 2.5.0 ztree : 3.5.31

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

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

MagicMHD的博客 3922

商场小程序+springboot java

商城小程序,画面优美,让你爱不释手。代码优雅。有问题咨询 商城小程序,画面优美,让你爱不释手。代码优雅。有问题咨询 商城小程序,画面优美,让你爱不释手。代码优雅。有问题咨询

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

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

MagicMHD的博客 2809

java springboot data jpa 做的登录小程序 (未完成)

java springboot data jpa 做的登录小程序 为了熟悉springboot组件,自己写的一些测试,不足的地方大家多交流 相互提高

spring boot和mybatis整合小项目

spring boot和mybatis整合小项目,仅供参考..............................................................................................

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

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

MagicMHD的博客 1598

Autosar Davinci Configurator新建工程以及导入DBC和CDD

Autosar Davinci Configurator新建工程前言一、Autosar Davinci Configurator新建工程二、Autosar Davinci Configurator导入DBC和CDD1.引入库2.读入数据总结 前言 如何用 DavinciCFG 新建工程,以及导入DBC和CDD文件。 一、Autosar Davinci Configurator新建工程 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、Autosar Davinc

别再跑偏了的博客 1万+

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

1、首先我们完善我们的项目结构如下图: 这里我们要注意以下dataobject(dto)和model、dao和viewobject(vo)层的区别: Model层是面向业务的,我们是通过业务来定义Model的,dao层对应于数据库中存储的数据(数据表),VO对应于页面上需要显示的数据(表单),dto是用于数据传输的,说白了就是用来放数据的,不用它来涉及逻辑操作。关于这几个领域模型的实体类我...

MagicMHD的博客 1937

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1617

python如何实现点云可视化交互——Open3D实例教程(获取所选点的信息)保姆级教学

python如何实现点云可视化交互——Open3D实例教程(获取所选点的信息)保姆级教学

qq_45912037的博客 1万+

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

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

才下眉头n.的博客 7222

机器人关节电机发热难题:从工程化角度拆解热管理解决方案(下)

摘要:本文系统分析了机器人关节电机与驱动系统的热管理方案,重点解决局部热点问题。针对不同功率场景提出了热管/均热板散热(适用于中小功率)和液冷散热(适用于高功率)的具体实施方案,详细比较了结构参数、材料选择、安装工艺和散热效果。特别强调了电机-驱动协同热管理的重要性,提出"工况联动+热路径共享"的核心理念,包括一体化散热结构设计和动态控制策略。最后介绍了热仿真与测试验证方法,确保方案的有效落地。通过系统级热管理,可显著降低温升(热点区域降温30-60℃),同时优化体积和能耗。

bother3000的博客 3325

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

如何实现三种不同RAM?(单端口RAM、伪双端口RAM、真双端口RAM|verilog代码|Testbench|仿真结果)

RAM(随机存取存储器)是计算机系统中的一种主要存储器件,用于存储和读取数据。在RAM中,单端口RAM(Single-port RAM)和双端口RAM(Dual-port RAM)是两种常见的类型,双端口RAM又分为真双端口(True dual-port RAM)和伪双端口RAM(Simple dual-port RAM)。那么什么是单端口和双端口?又该如何区分真双端口和伪双端口?输入只有一组数据线和一组地址线,读写共用地址线,输出只有一个端口。

Loudrs的博客 1万+

Android性能分析深度指南:Perfetto工具全面解析

本文深入探讨Android性能优化工具Perfetto的应用与实践。作为Google推出的新一代追踪系统,Perfetto整合了CPU调度、内存分配、电池状态等多维度分析功能,通过高性能数据处理和可视化界面帮助开发者定位性能瓶颈。文章系统介绍了Perfetto的架构原理、配置方法和核心功能,包括CPU性能分析、内存泄漏检测等关键技术。通过电商应用卡顿优化的实战案例,展示了如何利用数学建模(如帧时间公式$T_{\text{render}}\leq16.67\text{ms}$)指导性能调优。

郑伟强dev的专栏 144

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

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

梵心白莲的博客 936

零基础入门篇③ PyCharm使用指南(个性化设置、开发必备插件、常用快捷键)

Python从入门到精通👉零基础入门篇③

hacker707的博客 4371

Spring Boot+MyBatis 电商项目 -03- MySQL 连接、DRUID、MyBatis-generato 配置及测试

Spring Boot + MyBatis 电商项目 - 03- 修改端口、配置 MySQL 数据库 上一篇 Spring Boot + MyBatis 电商项目 - 02- 引入 Spring Boot 依赖包 介绍了简单的创建项目,及设置路径映射。 如果你的电脑里有很多项目,有 Eclipse 开发的,有多个 Tomcat ,或者多个版本,可能会需要修改默认的 8080 端口。 一、如果你的 ...

肖朋伟 2897

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SpringBoot+Vue前后端分离电商项目实战解析

前后端分离架构是现代Web开发的主流模式,通过将前端展示层与后端业务逻辑解耦,显著提升开发效率和系统扩展性。其核心原理是基于RESTful API进行数据交互,前端使用Vue等框架处理用户界面,后端采用SpringBoot提供数据服务。这种架构在电商系统中尤其重要,能有效支持高并发场景和快速迭代需求。本文以明星周边电商项目为例,详细讲解如何使用SpringBoot 2.7和Vue 3.x实现商品管理、订单支付等核心功能,包括MyBatis动态SQL优化、跨域解决方案等工程实践,并分享数据库设计、API规范等

weixin_33755557的博客 349

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 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、付费专栏及课程。

余额充值