微服务学习+商城

一、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

2.高级

六、Redis

相关推荐
勤劳的进取家几秒前
SSH配置
运维·网络·学习
三品吉他手会点灯几秒前
C语言学习笔记 - 17.C编程预备计算机专业知识 - 数据类型
c语言·笔记·学习
噜噜噜阿鲁~3 分钟前
python学习笔记 | 7.4、高级特性-生成器
笔记·python·学习
qcx238 分钟前
深入解析,什么是Agent,Agent的 架构与设计模式
设计模式·架构
胡图图不糊涂^_^8 分钟前
网络原理笔记
java·网络·笔记·学习·tcp/ip·http·https
奇逍科技圈9 分钟前
开源赋能与 BC 一体化:深度解析中企销订货系统源码如何重构批发零售增长引擎
后端·架构·开源·零售
SamDeepThinking12 分钟前
秒杀系统里的RocketMQ,不是发个消息那么简单
java·后端·架构
李李李勃谦20 分钟前
基于鸿蒙PC多窗口架构的任务管理与番茄钟工作流实践
华为·架构·harmonyos
stm32 菜鸟31 分钟前
nucleo-f411re学习记录-4,定时器TIM2实现延时功能
学习