需求分析与系统设计
一.需求分析
- 一个全品类B2C电商平台,包含网站前台和管理后台两大部分。网站前台包含主站频道(首页、搜索、购物车及支付)、用户中心、秒杀、优惠券等频道。管理后台包含商品、订单、库存、用户、运营、统计、财务、设置等功能。
二.系统设计
- 数据库分库设计
(1)商品库 qingcheng_goods
(2)订单库 qingcheng_order
(3)基础设置库 qingcheng_config
(4)运营库 qingcheng_business
(5)用户库 qingcheng_user
(6)系统库qingcheng_system
(7)支付库 qingcheng_pay
(8)短信库 qingcheng_sms - 技术选型
主框架技术:SSM(通用mapper)+Dubbo
前端技术: 网站后台 Vue.js+ElementUI 网站前台采用Vue.js 和模板技术 thymeleaf
消息中间件技术: RabbitMQ
搜索中间件技术: elasticsearch
缓存中间件技术: redis
报表插件: echars
安全框架:SpringSecurity
单点登录中间件 :CAS - 系统架构图
通用mapper
一.简介
- 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增
删改查操作以及Example相关的单表操作。为什么要用通用mapper?我们这里列举一下
原生Mybatis的痛点:- mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改
- 需要自己实现sql分页,select * from table where . . . limit 1,3自己手写分页,除了传参page、pageSize,还需要返回条目总数count。
- 数据库可移植性差:如果项目更换数据库,比如oracle-->mysql,mapper.xml中的
sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的。 - 生成的代码量过大。
- 批量操作,批量插入,批量更新,需要自写。
而这些,通过通用mapper就可以很轻松的解决了。
二.快速入门
- 通用mapper与Spring集成
通用mapper的三种使用方式 ,纯java使用方式、与Spring集成方式、与SpringBoot集成方式。
(1)引入依赖
(2)与spring集成
和通用 Mapper 以前版本一样,可以直接使用 tk.mybatis 提供的 tk.mybatis.spring.mapper.MapperScannerConfigurer 进行配置,这个配置和MyBatis 官方提供的 org.mybatis.spring.mapper.MapperScannerConfigurer 区别只是
第一层的包名, tk 和 org 。所以使用这种方式时,如果你项目已经使用 org. 进行了
配置,只需要改成 tk. 即可。 - 实体类映射
@Table是指定实体类对应的数据库表 @Id指的是主键映射。经过上面简单的配置后,相
当于就有了 MyBatis 中的关系映射了 - 创建Mapper接口
这里继承了 tk.mybatis.mapper.common.Mapper 接口,在接口上指定了泛型类型 Brand 。当你继承了 Mapper 接口后,此时就已经有了针对 Brand 的大量方法
工程搭建
一.准备工作
- 配置maven本地仓库
- 创建数据库表
- 注册中心zookeeper
二.模块依赖关系
- 我们的工程有三种模块:(1)公共模块 (2)服务层模块 (3)web层模块。
公共模块主要由公共配置和公共类构成。
三.工程搭建
- 父工程与公共模块
- 创建父工程qingcheng_parent pom.xml需要配置
- 创建公共模块qingcheng_common
resources下创建applicationContext-common.xml
dubbo-address.properties
log4j.properties - 创建qingcheng_common_service
resources下创建applicationContext-dao.xml
applicationContext-dubbo.xml - 创建qingcheng_common_web
- 创建实体层模块qingcheng_pojo
- 创建服务接口层模块 qingcheng_interface
- 服务层模块(商品)
- 创建qingcheng_service_goods
- 创建webapp/WEB-INF/web.xml
- resources下创建dubbo.properties
- resources下创建db.properties
- web层(管理后台)
- 创建qingcheng_web_manager模块
- 创建webapp/WEB-INF/web.xml
- resources下创建dubbo.properties
管理后台-品牌管理后端
一.需求分析
- 实现对品牌的基本操作(增删改查),只完成后端代码部分,并通过浏览器等工具完成测试
二.表结构分析
- tbbrand 品牌表
三.代码实现
- 品牌列表
url : /brand/findAll.do
http请求方式 : GET
返回格式 : [{"id": 品牌id,"name": 品牌名称,"image": 品牌图片地址,"letter": 品牌的首字母,"seq": 排序,},.......]
代码实现:- 在qingcheng_pojo工程创建com.qingcheng.pojo包,包下创建实体类
- qingcheng_service_goods工程创建com.qingcheng.dao,包下创建数据访问层接口
- qingcheng_interface工程创建com.qingcheng.service.goods包,包下创建业务接口
- qingcheng_service_goods工程创建com.qingcheng.service.impl包,包下创建类
- qingcheng_web_manager工程创建com.qingcheng.controller.goods 包,包下创建类
- 启动工程,浏览器测试:http://localhost:9101/brand/findAll.do
- 在qingcheng_pojo工程创建com.qingcheng.pojo包,包下创建实体类
- 品牌分页列表
url : /brand/findPage.do
http请求方式 : GET
请求参数 :
例子 :
返回格式 :
代码实现 :- qingcheng_pojo创建com.qingcheng.entity包,包下创建类
- qingcheng_interface工程BrandService接口新增方法
- qingcheng_service_goods工程BrandServiceImpl新增方法
- qingcheng_web_manager工程BrandController新增方法
- 启动工程,浏览器测试:http://localhost:9101/brand/findPage.do?page=1&size=10
- qingcheng_pojo创建com.qingcheng.entity包,包下创建类
- 品牌条件查询
url : /brand/findList.do
http请求方式 : POST
请求参数 :
例子 :
返回格式 :
代码实现 :- qingcheng_interface工程BrandService接口新增方法
- qingcheng_service_goods工程BrandServiceImpl新增方法
- qingcheng_web_manager工程BrandController新增方法
- qingcheng_interface工程BrandService接口新增方法
- 品牌条件+分页查询
url : /brand/findPage.do
http请求方式 : POST
请求参数 :
例子 :
返回格式 :
代码实现 :- qingcheng_interface工程BrandService接口新增方法
- qingcheng_service_goods工程BrandServiceImpl新增方法
- qingcheng_web_manager工程BrandController新增方法
- qingcheng_interface工程BrandService接口新增方法
- 根据ID查询品牌
url : /brand/findById.do
http请求方式 : GET
请求参数 :
代码实现 :- qingcheng_interface工程BrandService接口新增方法
- qingcheng_service_goods工程BrandServiceImpl新增方法
- qingcheng_web_manager工程BrandController新增方法
- qingcheng_interface工程BrandService接口新增方法
- 品牌新增
- qingcheng_pojo 新增类
- qingcheng_interface工程BrandService接口新增方法
- qingcheng_service_goods工程BrandServiceImpl新增方法
- qingcheng_web_manager工程BrandController新增方法
- qingcheng_pojo 新增类
- 品牌修改
- qingcheng_interface工程BrandService接口新增方法
- qingcheng_service_goods工程BrandServiceImpl新增方法
- qingcheng_web_manager工程BrandController新增方法
- qingcheng_interface工程BrandService接口新增方法
- 品牌删除
url : /brand/delete.do
http请求方式 : GET
请求参数 :
例子 :
返回格式 :
代码实现- qingcheng_interface工程BrandService接口新增方法
- qingcheng_service_goods工程BrandServiceImpl新增方法
- qingcheng_web_manager工程BrandController新增方法
- qingcheng_interface工程BrandService接口新增方法
公共异常处理
qingcheng_common_web工程创建com.qingcheng.controller包,包下创建类