瑞吉外卖优化01
瑞吉外卖项目优化-Day01课程内容
环境搭建
缓存短信验证码
缓存菜品信息
SpringCache
缓存套餐数据
前言
1). 当前系统存在的问题
之前我们已经实现了移动端菜品展示、点餐、购物车、下单等功能,但是由于移动端是面向所有的消费者的,请求压力相对比较大,而我们当前所有的数据查询都是从数据库MySQL中直接查询的,那么可能就存在如下问题: 频繁访问数据库,数据库访问压力大,系统性能下降,用户体验较差。
2). 解决该问题的方法
要解决我们上述提到的问题,就可以使用我们前面学习的一个技术:Redis,通过Redis来做缓存,从而降低数据库的访问压力,提高系统的访问性能,从而提升用户体验。加入Redis做缓存之后,我们在进行数据查询时,就需要先查询缓存,如果缓存中有数据,直接返回,如果缓存中没有数据,则需要查询数据库,再将数据库查询的结果,缓存在redis中。
1. 环境搭建1.1 版本控制接下来,我们就需要对我们的功能进行优化,但是需要说明的是,我们不仅仅要对上述提到的缓存进行优化,还需要对我们程序的各个方面进行优化。我们本章节主要是针对于缓存进行优化,为了方便的对我 ...
瑞吉外卖03
瑞吉外卖-Day03课程内容
公共字段自动填充
新增分类
分类信息分页查询
删除分类
修改分类
1. 公共字段自动填充1.1 问题分析前面我们已经完成了后台系统的员工管理功能的开发,在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工时需要设置修改时间、修改人等字段。这些字段属于公共字段,也就是也就是在我们的系统中很多表中都会有这些字段,如下:
而针对于这些字段,我们的赋值方式为:
A. 在新增数据时, 将createTime、updateTime 设置为当前时间, createUser、updateUser设置为当前登录用户ID。
B. 在更新数据时, 将updateTime 设置为当前时间, updateUser设置为当前登录用户ID。
目前,在我们的项目中处理这些字段都是在每一个业务方法中进行赋值操作,如下:
如果都按照上述的操作方式来处理这些公共字段, 需要在每一个业务方法中进行操作, 编码相对冗余、繁琐,那能不能对于这些公共字段在某个地方统一处理,来简化开发呢?
答案是可以的,我们使用Mybatis Plus提供的公共字段自动填充功能。
1.2 基本 ...
瑞吉外卖优化02
瑞吉外卖项目优化-Day02课程内容
MySQL主从复制
读写分离案例
项目实现读写分离
Nginx-概述
Nginx-命令
Nginx-应用
前言
1). 存在的问题
在前面基础功能实现的过程中,我们后台管理系统及移动端的用户,在进行数据访问时,都是直接操作数据库MySQL的。结构如下图:
而在当前,MySQL服务器只有一台,那么就可能会存在如下问题:
1). 读和写所有压力都由一台数据库承担,压力大
2). 数据库服务器磁盘损坏则数据丢失,单点故障
2). 解决方案
为了解决上述提到的两个问题,我们可以准备两台MySQL,一台主(Master)服务器,一台从(Slave)服务器,主库的数据变更,需要同步到从库中(主从复制)。而用户在访问我们项目时,如果是写操作(insert、update、delete),则直接操作主库;如果是读(select)操作,则直接操作从库(在这种读写分离的结构中,从库是可以有多个的),这种结构我们称为 读写分离 。
今天我们就需要实现上述的架构,来解决业务开发中所存在的问题。
1. MySQL主从复制MySQL数据库默认是支持主从复制的,不需要借助 ...
瑞吉外卖优化03
瑞吉外卖项目优化-Day03课程内容
前后端分离开发
Yapi
Swagger
项目部署
前言
当前项目中,前端代码和后端代码混合在一起,是存在问题的,存在什么问题呢?
主要存在以下几点问题:
1). 开发人员同时负责前端和后端代码开发,分工不明确
2). 开发效率低
3). 前后端代码混合在一个工程中,不便于管理
4). 对开发人员要求高(既会前端,又会后端),人员招聘困难
为了解决上述提到的问题,现在比较主流的开发方式,就是前后端分离开发,前端人员开发前端的代码,后端开发人员开发服务端的业务功能,分工明确,各司其职。我们本章节,就是需要将之前的项目进行优化改造,变成前后端分离开发的项目。
1. 前后端分离开发1.1 介绍前后端分离开发,就是在项目开发过程中,对于前端代码的开发由专门的前端开发人员负责,后端代码则由后端开发人员负责,这样可以做到分工明确、各司其职,提高开发效率,前后端代码并行开发,可以加快项目开发进度。
目前,前后端分离开发方式已经被越来越多的公司所采用,成为当前项目开发的主流开发方式。
前后端分离开发后,从工程结构上也会发生变化,即前后端代码不再混合在同一个m ...
SSM整合
五、框架实战:SSM整合原理和实战目录
一、SSM整合理解
1.1 什么是SSM整合?
1.2 SSM整合核心问题明确
1.2.1 第一问:SSM整合需要几个IoC容器?
1.2.2 第二问:每个IoC容器对应哪些类型组件?
1.2.3 第三问:IoC容器之间关系和调用方向?
1.2.4 第四问:具体多少配置类以及对应容器关系?
1.2.5 第五问:IoC初始化方式和配置位置?
二、SSM整合配置实战
2.1 依赖整合和添加
2.2 控制层配置编写(SpringMVC整合)
2.3 业务层配置编写(AOP / TX整合)
2.4 持久层配置编写(MyBatis整合)
2.5 容器初始化配置类
2.6 整合测试
三、《任务列表案例》前端程序搭建和运行
3.1 整合案例介绍和接口分析
3.1.1 案例功能预览
3.1.2接口分析
3.2 前端工程导入
3.2.1 前端环境搭建
3.2.2 导入前端程序
3.3 启动测试
四、《任务列表案例》后端程序实现和测试
4.1 准备工作
4.2 功能实现
4.3 前后联调
一、SSM整合理解1.1 什么是SS ...
Mybatis-plus
七、MyBatis-Plus高级用法:最优化持久层开发目录
一、MyBatis-Plus快速入门
1.1 简介
1.2 快速入门
二、MyBatis-Plus核心功能
2.1 基于Mapper接口CRUD
Insert方法
Delete方法
Update方法
Select方法
自定义和多表映射
2.2 基于Service接口CRUD
对比Mapper接口CRUD区别:
使用Iservice接口方式
CRUD方法介绍
2.3 分页查询实现
2.4 条件构造器使用
2.4.1 条件构造器作用
2.4.2 条件构造器继承结构
2.4.3 基于QueryWrapper 组装条件
2.3.4 基于 UpdateWrapper组装条件
2.3.5 基于LambdaQueryWrapper组装条件
2.3.6 基于LambdaUpdateWrapper组装条件
2.5 核心注解使用
三、MyBatis-Plus高级扩展
3.1 逻辑删除实现
3.2 乐观锁实现
3.2.1 悲观锁和乐观锁场景和介绍
3.2.2 使用mybatis-plus数据使用乐观锁
3.3 防全表更新和删 ...
Mybatis多表映射_动态语句_逆向工程
三、MyBatis多表映射3.1 多表映射概念
多表查询结果映射思路
上面课程中,我全面讲解了单表的mybatis操作!但是开发中更多的是多表查询需求,这种情况我们如何让进行处理?
MyBatis 思想是:数据库不可能永远是你所想或所需的那个样子。 我们希望每个数据库都具备良好的第三范式或 BCNF 范式,可惜它们并不都是那样。 如果能有一种数据库映射模式,完美适配所有的应用程序查询需求,那就太好了,而 ResultMap 就是 MyBatis 就是完美答案。
官方例子:我们如何映射下面这个语句?
1234567891011121314151617181920212223242526272829303132333435<!-- 非常复杂的语句 --><select id="selectBlogDetails" resultMap="detailedBlogResultMap"> select B.id as blog_id, B.title as blog_title, ...
Mybatis数据输入_输出
三、MyBatis实践:提高持久层数据处理效率
目录
一、Mybatis简介
1.1 简介
1.2 持久层框架对比
1.3 快速入门(基于Mybatis3方式)
二、MyBatis基本使用
2.1 向SQL语句传参
2.1.1 mybatis日志输出配置
2.1.2 #{}形式
2.1.3 ${}形式
2.2 数据输入
2.2.1 Mybatis总体机制概括
2.2.2 概念说明
2.2.3 单个简单类型参数
2.2.4 实体类类型参数
2.2.5 零散的简单类型数据
2.2.6 Map类型参数
2.3数据输出
2.3.1 输出概述
2.3.2 单个简单类型
2.3.3 返回实体类对象
2.3.4 返回Map类型
2.3.5 返回List类型
2.3.6 返回主键值
2.3.7 实体类属性和数据库字段对应关系
2.4 CRUD强化练习
2.5 mapperXML标签总结
三、MyBatis多表映射
3.1 多表映射概念
3.2 对一映射
3.3 对多映射
3.4 多表映射总结
3.4.1 多表映射优化
3.4.2 多表映射总结
四、MyBatis动态语句
4 ...
SpringBoot
六、快速启动框架:SpringBoot3实战目录
一、SpringBoot3介绍
1.1 SpringBoot3简介
1.2 系统要求
1.3 快速入门
1.4 入门总结
二、SpringBoot3配置文件
2.1 统一配置管理概述
2.2 属性配置文件使用
2.3 YAML配置文件使用
2.4 批量配置文件注入
2.5 多环境配置和使用
三、SpringBoot3整合SpringMVC
3.1 实现过程
3.2 web相关配置
3.3 静态资源处理
3.4 自定义拦截器(SpringMVC配置)
四、SpringBoot3整合Druid数据源
五、SpringBoot3整合Mybatis
5.1 MyBatis整合步骤
5.2 Mybatis整合实践
5.3 声明式事务整合配置
5.4 AOP整合配置
六、SpringBoot3项目打包和运行
6.1 添加打包插件
6.2 执行打包
6.3 命令启动和参数说明
一、SpringBoot3介绍1.1 SpringBoot3简介
课程使用SpringBoot版本:3.0.5
https://docs.spring. ...
SpringMVC异常处理
四、RESTFul风格设计和实战4.1 RESTFul风格概述4.1.1 RESTFul风格简介
RESTful(Representational State Transfer)是一种软件架构风格,用于设计网络应用程序和服务之间的通信。它是一种基于标准 HTTP 方法的简单和轻量级的通信协议,广泛应用于现代的Web服务开发。
通过遵循 RESTful 架构的设计原则,可以构建出易于理解、可扩展、松耦合和可重用的 Web 服务。RESTful API 的特点是简单、清晰,并且易于使用和理解,它们使用标准的 HTTP 方法和状态码进行通信,不需要额外的协议和中间件。
总而言之,RESTful 是一种基于 HTTP 和标准化的设计原则的软件架构风格,用于设计和实现可靠、可扩展和易于集成的 Web 服务和应用程序!
学习RESTful设计原则可以帮助我们更好去设计HTTP协议的API接口!!
4.1.2 RESTFul风格特点
每一个URI代表1种资源(URI 是名词);
客户端使用GET、POST、PUT、DELETE 4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POS ...