尚庭公寓项目记录
数据库准备
- 保留图像时,保存图像地址就可以
- 数据表不是越多越好,可以用中间表来实现俩个表之间的联立
- 这样方便查数据但是却带来性能问题
- 而减少表的jion但是提高性能,以冗余来换去性能
- 采用MySQL,InnoDB存储引擎
- 物理删除和逻辑删除
- 逻辑删除有一个标记,后面会过滤掉
- 大数据时代,数据比较重要,被删除的数据也很重要
接口定义
- 根据页面的信息,每个模块需要什么接口,哪些可以共用一个接口
- 但终归是增删改查,但是看需要通过什么来查询信息,是有条件还是查询全部
- 根据ID删除属性和值,根据分页查询列表,比如嵌套的列表,省市县等
- 上传图像功能
根据ID查询房间详细信息
(用作修改时的表单回显)- 登录功能:获取图形验证码,请求登录,获取登录用户信息
-
增删改查,一般保存是不向后台新增ID的,该增加是有的
准备开发环境
两台Linux虚拟机
在其中一台,部署MySQL,Redis,MinIO
技术储备
MyBatis Plus快速入门
创建一个表,设置它的编码方式
CREATE DATABASE hello_mp CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
前面设定字符集,后面设定字符集的排序规则
id设置了自动增长,bigint比int有更长的字符设定
comment是对数据库对象的描述
primary是把id设置为主键
引入Maven依赖的时候,groupId一般写反向域名格式,来避免进行冲突
配置MySQL的时候,下面的URL是虚拟机的IP地址
创建实体时,Ctrl加v直接生成对应实体类
实体类注解:
通用Mapper
通用service
继承泛型接口,需要传入实体类
通过继承通用mapper接口和通用service接口
只不过方法略有区别
但是,实际上,mapper方法是封装在service接口下的
都是先定义一个接口,然后再定义一个实现类
条件构造器
MyBatis Plus共提供了两类构造器,分别是`QueryWrapper`和`UpdateWrapper`。其中`QueryWrapper`主要用于查询、删除操作,`UpdateWrapper`主要用于更新操作
QueryWrapper支持链式操作
考虑优先级的情况,匿名的子类对象可以替换成lambda表达式
LambdaWrapperTest类
传入的格式不一样
分页插件
总结:
简单的查询可以用通用Mapper和通用service
复杂的查询需要用条件构造器和分页插件
MyBatisX插件
使用它可根据数据库快速生成Entity
、Mapper
、Mapper.xml
、Service
、ServiceImpl
等代码
MinIO
对象存储服务
可以上传图片什么的,为其分配一个ID,即url,端点加绝对路径
Redis
概念:
基于内存储存,存储性能速度惊人,通过键值对储存,通常用作缓存服务
特点:
高性能,支持多种数据结构,持久化,灵活的数据过期策略
持久化方式:
定期快照 :有时间间隔,但是不实时,只能恢复最近的快照,容易数据丢失
实时记录写操作日志:恢复的时候比较慢,写操作太多
应用场景:
用作缓存,缓存可以显著提升访问速度,降低数据库压力。