尚庭公寓实战(一):项目架构设计与MyBatis Plus高效实践
尚庭公寓项目第一天
一、项目开发流程
1、开发流程
第一步 产品根据市场调研的结果,设计产品效果图(原型)
第二步 UI设计师(美工)把产品原型开发成可以交互的静态页面(html页面)
第三步 架构师设计数据库架构和定义接口
第四步 根据数据库和功能接口,编写代码实现功能
第五步 进行功能的测试
第六步 运维人员项目部署,后期维护
2、接口设计原则
2.1 什么是接口
- 这里的接口不是interface
- 功能接口 指的是开发controller service mapper过程
2.2 接口设计原则
一般来讲,接口根据业务需求进行设计的
通俗来讲,根据表进行接口设计
举例,比如有users用户表
对这个用户表可以进行curd操作,所以设计接口时候,
1 查询接口
2 添加接口
3 修改接口
4 删除接口
2.3 接口文档
一般来讲,为了开发方便,实际编写接口文档
接口文档一般包含:
1 功能描述,比如保存用户信息
2 接口请求地址,比如/user/add
3 请求方式,比如 POST
4 请求参数,比如 {“id”:1,”name”:”zhangsan”}
5 响应结果
{
"code": 0,
"message": "",
"data": {},
"ok": true}
二、尚庭公寓功能和技术
1 项目概述
尚庭公寓项目是租赁类项目,项目采用前后端分离的模式,包含两个系统 用户移动端 和 后台管理端
通俗来讲,用户移动端是用户使用的,后台管理端是管理员使用的
项目主要包含的技术
SpringBoot 、MyBatisPlus、MySQL、Redis、MinIO
三、数据库如何设计
1、ER图
ER图:实体(Entity)关系(Relationship)模型


第一步 确定要创建哪些表(实体)
第二步 确定表与表之间关系(实体之间关系)
第三步 确定每个表(实体)的属性及其类型(表里面有哪些字段)
最终效果:

2、总结数据库设计
第一步 确定要创建哪些表(实体)
第二步 确定表与表之间关系(实体之间关系)
第三步 确定每个表(实体)的属性及其类型(表里面有哪些字段)
第四步 (阿里开发手册约定)要求每个表必须有主键,要求表必须有三个字段:主键id,创建时间,修改时间
3、ER图工具介绍
- draw.io
4、表与表关系创建方式
4.1 一对多
- 在多的那一方创建字段,指向一的主键

4.2 多对多
- 创建第三张表,在第三张表至少有两个字段,这两个字段分别指向两个表主键

4.3 一对一

四、搭建项目软件环境
1、概述
- 实际开发中,项目中运行软件服务都是在Linux系统中
- 因为实际在Linux系统中安装软件,都是使用Docker
- 今天临时安装在windows里面
2、需要软件环境
第一个 MySQL
第二个 Redis(windows版本)
- 首先,资料找到redis安装压缩文件

- 其次,解压到没有中文和空格的目录,就可以了
- 在目录里面找到redis-server.exe,直接双击启动


- 使用客户端连接工具,进行测试

第三个 MinIO
对象存储是用于存储非结构化数据的数据存储架构
可以使用MinIO存储文件(图片)
第一步,在资料里面找到文件 minio.exe

第二步,把minio.exe放到没有中文和空格目录里面
第三步,创建空文件夹,名称不要有中文和空格(最好和minio.exe放一起)
**第四步,在minio.exe所在目录中,使用cmd打开,执行命令 ** minio.exe server D:\minio\data

- 可以使用地址 http://127.0.0.1:9000 进行访问,默认用户名和密码 minioadmin
五、MyBatis Plus入门
1 复习
之前学习过MyBatis,底层使用JDBC,对JDBC进行封装,方便操作数据库
MyBatis基本过程
第一步 引入依赖
第二步 配置数据库
第三步 创建Mapper的interface接口
第四步 创建MyBatis配置文件
如何使用原生MyBatis基本curd操作,还需要编写简单sql语句
出现新的框架 MyBatis Plus,可以让MyBatis更加简单
2 MyBatis Plus概述
官网: baomidou.com
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MyBatis-Plus特性:
– 使用很少的代码实现单表大部分 CRUD 操作
– 内置分页插件
– 内置代码生成器
– 如果多表或者复杂查询操作,还是需要编写sql语句实现
- 我们尚庭公寓项目使用MyBatis-Plus来操作MySQL数据库
3 入门案例
第一步 创建数据库,创建表,添加数据
1 | # 创建数据库 |
第二步 创建SpringBoot工程,引入MyBatisPlus依赖
1 | <parent> |
第三步 创建配置文件,配置数据库信息
1 | spring: |
第四步 创建Spring Boot 启动类
1 |
|
第五步 创建实体类
1 | //lombok生成set get等方法 |
第六步 编写mapper接口类
1 | public interface UserMapper extends BaseMapper<User> { |
第七步 进行测试
1 |
|
4、mp支持主键策略(了解)

5、使用mp实现添加操作
1 | //2 添加数据 |
- 发现一个细节问题
- 每次添加的数据里面主键id值,每次唯一的,后面的比前面大

总结
- mp默认使用主键增长策略,是生成唯一的数字值,后面比前面大
- 在mp默认配置是

6、使用mp实现修改操作
1 |
|
7、使用mp实现删除操作
7.1 概述
删除分为两种方式:物理删除 和 逻辑删除
**物理删除:**表里面数据真正没有了
**逻辑删除:**表里面数据还存在,但是查询不出来了
7.2 逻辑删除

第一步 在表添加字段

ALTER TABLE USER ADD deleted INT DEFAULT 0 ; # int 类型 1 逻辑删除 0 未逻辑删除
第二步 在表对应实体类添加字段属性
- 属性添加逻辑删除注解 @TableLogic
1 | //这个注解mp封装逻辑删除功能,约定这个注解的字段 , |
第三步 测试
1 | //4 删除方法 |
8、MyBatisPlus总结
1 使用mp核心部分
是创建interface类,继承BaseMapper
1 | public interface UserMapper extends BaseMapper<User> { |
2 使用mp实现查询(查询所有)
- 调用mp封装的方法selectList(null)
- null表示没有条件
1 | List<User> list = userMapper.selectList(null); |
3 使用mp实现添加操作
- 调用mp封装的方法insert(对象)
- 方法调用返回影响行数
1 | int rows = userMapper.insert(user); |
- mp进行添加操作,默认有主键id生成策略ASSIGN_ID
- ASSIGN_ID特点:生成唯一数字值,后面比前面大
1 |
|
4 使用mp实现修改操作
- 修改有两步
- 首先,根据id查询,selectById(id值)
- 其次,设置值,调用方法修改updateById(对象)
1 | //第一步 根据id查询原始数据 |
5 使用mp实现删除
物理删除:真正删除了
逻辑删除:数据还在,但是查询不出来了,使用标志位表,比如约定0没有删除,1已经删除
在mp只需要在逻辑删除字段添加注解就可以了
1 | //这个注解mp封装逻辑删除功能,约定这个注解的字段 , |
1 | int i = userMapper.deleteById(1); |


