最近做了一个以SpringBoot+Mybaits为框架前后端分离的商城秒杀项目,主要使用的工具是Idea和Maven,SpringBoot是一个功能十分强大的框架集合,里面包含了很多的框架.
工程的开始,我先配置好了应该有的文件结构

然后在Pom.xml里配置好要用的Jar包必要的SpringBoot有关的两个Jar包,`<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version></parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
然后再配置必要的数据库连接有关的Jar包
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version>
</dependency>
还有必要的数据库连接池这里我们用的是阿里里巴巴的德鲁伊的数据库连接池<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.3</version></dependency>
实现工程持久层我用的是Mybatis框架,所以我配置了springBoot和Mybaits的整合Jar包
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version>
</dependency>

最重要的是在Pom.xml里配置一个插件用于逆向工程由数据库生成持久层代码.

    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-jar-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin><plugin><artifactId>maven-site-plugin</artifactId><version>3.7.1</version></plugin><plugin><artifactId>maven-project-info-reports-plugin</artifactId><version>3.0.0</version></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency></dependencies><executions><execution><id>mybatisgenerator</id><phase>package</phase><goals><goal>generate</goal></goals></execution></executions><configuration><verbose>true</verbose><overwrite>false</overwrite><configurationFile>src/main/resources/mybatis-generator.xml</configurationFile></configuration></plugin></plugins></pluginManagement>

然后在自己生成一个mybaits-generator.xml文件,在插件中已经映射好了

  <configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>

然后在application.properties文件中配置数据库信息和数据库线程池
这些完成后我们就可以使用SpringMVC的方式开发用户信息
我先定义了Controller层的通用返回对象,在这个类里我封装了数据对象和是否成功的提示信息在发生错误时我们需要一个错误信息的提示,所有还有定义一个总的异常处理类来处理未被Controller层吸收的异常.
这样做的目的是为了能在接下来的工作中遇到错误时能找到问题的原因
然后我们通过对Controller层类的三个注解来让SpringBoot帮我自动配置这个项目
@SpringBootApplication(scanBasePackages = {“com.miaoshaproject”})
@RestController
@MapperScan(“com.miaoshaproject.dao”)
该工程中用到的注解在最后都会有总结

由于这个项目是前后端分离的,我们的前端用的是Metronic模板
1.用户注册模块
注册的方式是通过手机号注册,向手机号发生验证码来进行注册的,所以我们要先做一个前端页面,有两个输入框用来放置手机号和验证码.然后在创建好用来存放手机号和验证码和id的用户注册表
具体流程:
输入一个手机号在前端页面,然后点击获取验证码按钮向后端发送一个ajax请求,因为我用的是前后端分离的做法所以要用ajax请求,然后由后端生成一个随机的验证码,将手机号和验证码都存人数据库用户注册表中,然后再向前端返回验证码的信息,具体的业务逻辑这里不详细叙述.由于前后端分离的原因,会存在一个跨域请求的问题我们要这么在后端设置
@CrossOrigin(allowCredentials = “true”,allowedHeaders = “*”)
然后在前端也要进行设置
xhrFields:{withCredentials:true},
由于短信发送功能比较麻烦,我直接将验证码打印出来.
2.用户具体信息模块
在前端创建好对应的属性字段让用户输入,然后我们先在后端建立数据模型,然后再在数据库里建立一张对应的表,为什么要先在后端生成数据模型呢,是因为我们在Dao层,Service层,Controller层,都要生成对应的数据模型返回给上一层,这样做的目的是为了能够让数据的安全性能得到最好的保障.然后在以同样的流程从前端得到数据存人数据库中,不过在工程中要完成登录的验证工作,将前端得到的数据与数据库中的数据进行对比,由此判断是否成功.
3.第三个模块是商品模块,分为创建商品和商品详情
与登录流程一样先完成前端页面的开发,然后在后端建立每一层对应的模型,然后再在数据库中创建对应的表,在完成过程中基本没有遇到坑
4.下单模块
开始流程如上
通过点击前端商品的名字先进入商品详情的界面,点击下单按钮,向后端发送一个请求,并且将对应的商品信息传入后端,将订单信息存人数据库中,并返回下单成功的信息.
5.秒杀模块
秒杀模块是基于下单模块的加强版,我们先在后端建立起秒杀活动的模型,也在数据库建立对应的秒杀活动信息的模型,然后在商品详情的前端加上我们秒杀活动的信息,主要是秒杀活动的状态(进行中,未进行,即将进行),还有秒杀的价格,秒杀活动的信息我们现在数据库中自行插入,设置好秒杀活动的起始时间和结束时间,然后我在前端页面设置了一个秒杀的倒计时
对应的前端代码
setInterval(raloadDom,1000);

 function raloadDom(){$("#title").text(g_itemVo.title);$("#description").text(g_itemVo.description);$("#stock").text(g_itemVo.stock);$("#price").text(g_itemVo.price);$("#imgUrl").text(g_itemVo.imgUrl);$("#sales").text(g_itemVo.sales);if(g_itemVo.promoStatus == 1){var startTime = g_itemVo.startDate.replace(new RegExp("-","gm"),"/");startTime = (new Date(startTime)).getTime();var nowTime = Date.parse(new Date());var delta = (startTime - nowTime)/1000;if(delta<=0){//活动开始了g_itemVo.promoStatus = 2;raloadDom();}$("#promoStartDate").text("秒杀活动将于:"+g_itemVo.startDate+"开始 倒计时:"+delta+"秒");$("#promoPrice").text(g_itemVo.promoPrice);$("#createorder").attr("disabled",true);}else if(g_itemVo.promoStatus == 2){//秒杀活动真在进行$("#promoStartDate").text("秒杀正在进行中");$("#promoPrice").text(g_itemVo.promoPrice);$("#createorder").attr("disabled",false);$("#normalPrice").hide();}};

这样我就完成了一个基于SpringBoot的简单项目
在后端代码中用到的一些注解我也有了一定的了解
1.@Controller():声明这是一个Controller类

2.@RequestMapping():处理映射请求的注解。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。用在方法上,表示该方法的访问路径

3.@CrossOrigin(allowCredentials = “true”,allowedHeaders = “*”)解决跨域请求

4.@ResponseBody:指定方法返回的是String或json类型数据

5.@Service:声明这是一个Service类交给Spring控制

6.@Transactional:声明该方法为事务,具有事务的性质

7.@RequestParam(name = “id”)Integer id:该方法的传入参数

8.@ExceptionHandler:统一处理某一类异常,从而能够减少代码重复率和复杂度

9.@ ResponseStatus:一般修饰的是一个异常类,当处理器的方法被调用时,@ResponseStatus指定的code和reason会被返回给前端。value属性是http状态码,比如404,500等。reason是错误信息

10.@SpringBootApplication(scanBasePackages = {“com.miaoshaproject”}):相当于这三个注解组合

@Configuration:就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。

@EnableAutoConfiguration:可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。

@ComponentScan:主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中

11.@RestController:= @Controller + @ResponseBody。

12.@MapperScan(“com.miaoshaproject.dao”):可以指定要扫描的Mapper类的包的路径

13.@Autowired:自动注入,用于只有一个继承类的情况
在来说说我在项目中用到的一些工具类
BeanUtils.copyProperties(object,object)
这个工具类帮助在转化各个层模型是提供了很多的帮助,它可以将第一个对象中的值复制给第二个对象,但是只能复制一样的字段的数据,其他数据还是要自己设置
LocalDateTime now = LocalDateTime.now();
String nowdata = now.format(DateTimeFormatter.ISO_DATE).replace("-","");
这个方法可以极好的得到你想要的时间格式

基于SpringBoot+Mybatis框架的商城秒杀项目总结相关推荐

  1. 基于springboot+mybatis+jsp日用品商城管理系统

    基于springboot+mybatis+jsp日用品商城管理系统 一.系统介绍 二.功能展示 1.主页(客户) 2.登陆.注册(客户) 3.我的购物车(客户) 4.我的订单(客户) 5.我的商铺(商 ...

  2. 一款基于SpringBoot + MyBatis + Vue 的音乐网站项目

    项目说明 本音乐网站的客户端和管理端使用 VUE 框架来实现,服务端使用 Spring Boot + MyBatis 来实现,数据库使用了 MySQL. 项目功能 音乐播放 用户登录注册 用户信息编辑 ...

  3. 基于springboot mybatis网上商城系统源码和论文

    伴随着互联网技术的进步,各种电商平台也如雨后 春笋不断涌现.一个好的电商平台应该具有用户体验度高,用户信息安全等特点, 从而可以满足更多的用户需求.现有的电商平台虽然在不断完善,但仍然存在着 不少问题 ...

  4. Jeecg-Boot 1.0 版本发布,基于SpringBoot+Mybatis+AntDesign快速开发平台

    基于SpringBoot+Mybatis+AntDesign企业级快速开发平台 引言:      Jeecg-Boot 一款基于代码生成器的J2EE快速开发框架!  采用前后端分离技术: Spring ...

  5. 图片管理系统源码_「程序员分享」基于SpringBoot开发的天猫商城源码

    前言 大家好,我是程序员it分享师,应粉丝的要求,今天给大家带来一个基于Springboot开发的天猫商城的源码! 使用技术 天猫商城系统使用的是Spring,SpringMvc,SpringBoot ...

  6. 1112_Vue+SpringBoot+Mybatis的简单员工管理项目

    Vue+SpringBoot+Mybatis的简单员工管理项目 本文项目参考自:https://github.com/boylegu/SpringBoot-vue https://www.cnblog ...

  7. 基于SpringBoot+Mybaits框架开发的OA自动化办公系统Java源码

    源码介绍 办公自动化(OA)是面向组织的日常运作和管理,员工及管理者使用频率最高的应用系统,极大提高公司的办公效率.基于SpringBoot+Mybaits框架开发的OA自动化办公系统Java源码,基 ...

  8. SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)

    系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...

  9. 【商城秒杀项目】-- 概况

    什么是秒杀 秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到.对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量 ...

最新文章

  1. fedora 共享NFS
  2. 使用threadlocal_何时以及如何使用ThreadLocal
  3. c语言删除双向链表重复元素,求一个双向链表的建立,插入删除的c语言程序完整版的,借鉴一下思想,再多说一下就是能运行的那种...
  4. postgresql explain的初步分析
  5. mysql5.6-5.7性能调优
  6. python生成10000个样本数据集_python – 为什么随机抽样比例数据集不是样本量? (pandas .sample()示例)...
  7. [解决方案]Window 2008 R2 + IIS7.5 + VS2013 错误代码 0x80070002
  8. 网吧无盘服务器最佳配置,史上最全的网吧无盘服务器配置
  9. ubuntu Empathy msn验证出错
  10. python opencv读大华摄像头视频流实时移动侦测运动检测截图拍照保存
  11. 使用VS2015+win7编译WebKit(WebKit-r189384)
  12. 最基础硬件学习 | 简单闪烁灯制作
  13. 微信棋牌源码虚拟机搭建Hadoop集群
  14. Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images
  15. Codeforces Round #789 (Div. 1) B. Tokitsukaze and Meeting
  16. 1300:鸡蛋的硬度
  17. Mobius反演总结
  18. 关于spring @JsonFormat
  19. 做一件事如何突破「擅长」达到「精通」
  20. iqooneo3 如何不用vivo账号下载外部应用_你说iQOO Neo 3很香?抱歉,我有不同的意见...

热门文章

  1. ZYNQ-UART串口中断测试
  2. 浅谈图像处理与深度学习
  3. Kuberntes部署MetalLB负载均衡器
  4. Google API大全
  5. perl基本语法四-正则表达式
  6. Kubernetes的网络架构
  7. React之 常见的hooks
  8. 新的RA Group勒索软件针对美国组织进行双重勒索攻击
  9. 使用python GDAL生成COG(Cloud Optimized GeoTIFF)
  10. 长连接、短连接的区别