一、MybatisPlus
1.快速入门
依赖是mybatis-plus这种,说明不是springboot官方的
plus的依赖里面包含mybatis的了

BaseMapper里面封装了增删改查的方法,直接继承接口的方法就能实现不用写代码实现增删改查
2.常见注解
如果没有写注解的时候,MyBatisPlus默认会

一些常用的注解

exist=false表示数据库中这个字段不存在
3.常见配置

没写别名扫描包前

写了别名扫描包后

4.条件构造器
wrapper就能够代表复杂的结构

QueryWrapper
查询出名字中带o,存款大于等于1000元的人的id、username、info、balance等字段

更新用户名为jack的用户的余额为2000

UpdateWrapper
更新id为1,2,4的用户的余额,扣200

LambdaQueryWrapper
也有LambdaUpdateWrapper,这种没有在java代码中写死数据库表的字段名,比较灵活优雅

5.自定义SQL
比较符合企业的要求
我们不希望在.xml文件中写那么多判断,在java代码里面直接写会更容易一些
我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件(在java代码里面写),然后自己定义SQL语句中剩下的部分

(ew.customSqlSegment) 是拼接 customSqlSegment固定写法,自定义的sql片段部分
6.Service接口
接口类编写





案例基础

方便测试可以引入knife4j的依赖(swagger的加强版), 是一个基于 Swagger 的增强工具,用于生成更美观、功能更强大的 API 文档

同时还需要在application.yaml中添加

通过userservice接口实现了单表的增删改查操作,不难的都不用动业务层直接就在controller层实现了


根据用户id扣除用户余额



IService的LambdaQuery方法

eq相当于where,写条件

IService的LambdaUpdate方法


批量插入数据
在数据库url这里加上




7.扩展功能
代码生成
下载mybatisplus插件


静态工具类
UserService引用AddressService,AddressService又引用UserService,这样会导致循环调用产生死循环
Mybatis-plus提供Db工具类(解决在某个业务对象中调用另外一个业务对象的问题)

枚举处理器

序列化:把java符号转换为json字符串的时候他

JSON处理器
这样可以将数据库的json返回前端也是json


分页插件

多组户:一个平台有多个商家在用,配置好这个每次使用的时候都会自动在sql语句中拼接好id



二、docker
1.快速入门
部署MySQL


镜像仓库:Docker Hub 国内无法使用
命令解读

端口映射:在虚拟机中我的mysql直接运行的是3306端口,但我从外部访问不到,我可以把mysql的3306端口,映射到虚拟机的3306端口,这样外部就可以访问了
前面的端口是映射到的虚拟机的端口,后面是容器内的这个服务的端口

2.基础
常见命令
docker run是创建并启动容器

每个docker容器内部都会独立模拟出来一个linux操作系统(像套娃一样),在这个容器中我用linux进入mysql,就可以进入这个容器的mysql服务(和linux中一样使用)
简化命令


数据卷
volume 是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁
自定义镜像
网络
3.项目部署
三、SpirngCloud


1.微服务拆分



虽然物理上是隔开的,但两台服务器可以通过网络连接,通过网络发请求


2.服务治理
注册中心

Nacos

nacos运行在linux虚拟机上,用docker部署

同一种服务可以有多个实例,可以对多个实例实现负载均衡调用

3.OpenFeign



连接池


最佳使用方式
1.这里可以在pom文件里面直接引入对应的项目坐标,问题是相互调用起来很麻烦,耦合度偏低

2.放在一个里面,都去访问它,耦合度略微高


日志


4.网关
gateway

网关能在注册中心找到微服务具体运行在哪个地方

响应式编程>阻塞式编程

网关也是个服务

路由属性



网关登录校验


网关传递到微服务



这里面添加路径,可以让springboot原本扫描不到的包也进行自动装配

微服务之间传递


微服务登录解决方案

5.配置管理

配置共享





配置热更新

动态路由



使用json比较方便转,yaml不方便转

5.微服务保护
雪崩问题




Sentinel
jar包+搭建控制台




相当于在主线路失败的时候,提供一个兜底方案,友好提示或者结果



6.分布式事务


Seata




四、RabbitMQ
1.初识
高性能的异步通讯组件



virtual-host相当于数据库下的每个database

Java客户端



交换机

Fanout

Direct

Topic

基于Bean声明队列和交换机

基于注解声明队列和交换机

消息转换器


2.高级
五、ElasticSearch


1.初识
倒排索引
模糊搜索使用正向索引特别慢,需要一个个去比对


IK分词器



基础概念



索引库操作



文档操作




JavaRestClient


