数据库准备
- 保留图像时,保存图像地址就可以
- 数据表不是越多越好,可以用中间表来实现俩个表之间的联立
- 这样方便查数据但是却带来性能问题
- 而减少表的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
等代码