微服务学习+商城

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

相关推荐
AI_零食2 小时前
Flutter 框架跨平台鸿蒙开发 - 鸿蒙版本跳棋游戏应用
学习·flutter·游戏·华为·交互·harmonyos
Mintopia2 小时前
技术人如何清晰表达:把复杂问题讲简单
架构
yangyanping201082 小时前
Go语言学习之Go Gin 生产级 flag 启动命令模板
开发语言·学习·golang
知识分享小能手2 小时前
MongoDB入门学习教程,从入门到精通,MongoDB的分片简介(14)
数据库·学习·mongodb
Lucis__2 小时前
Linux系统收官篇:线程学习的一些心得总结
linux·学习·线程
那我懂你的意思啦2 小时前
Vue2+Vue3学习
前端·vue.js·学习
Khsc434ka2 小时前
.NET 10 与智能体时代的架构演进:以 File-Based Apps 为核心的 C# 生态重塑
架构·c#·.net
蓝净云2 小时前
RESP 协议的工作原理
学习
wenzhangli72 小时前
OoderAgent 能力架构:基于 Workflow 控制理论的能力安装管理
后端·架构·asp.net