微服务实战课程 + MyBatis-Plus 全套课堂详细笔记
第一部分:微服务实战课程宣讲内容
一、课程核心亮点
延续旧版课程优势
- 课程设计精美
- 讲解通俗易懂
- 微服务技术覆盖全面
最大革新
搭载真实企业单体项目 —— 黑马商城
全程带领学员亲手完成:
单体项目 → 微服务项目
区别于市面 Demo 级课程,真正体验企业微服务拆分全过程。
市面同类课程痛点
很多课程:
- 只提供极简 Demo
- 没有真实业务
- 上来就是已经拆好的微服务
导致学员:
- 只会使用组件
- 不知道为什么拆
- 不知道企业真实问题
- 工作后不会改造老项目
二、为什么要学习微服务(市场 & 行业现状)
热度数据
百度搜索指数:
- 2015 年底开始快速增长
- 长期保持热门技术
企业架构现状
| 企业情况 | 占比 |
|---|---|
| 已全面使用微服务 | 30% |
| 正在迁移微服务 | 36% |
| 正在评估微服务 | 21% |
| 没有改造计划 | 13% |
招聘需求
目前:
中高级 Java 开发岗位几乎全部要求掌握微服务框架。
三、单体架构 VS 微服务架构
1、单体架构(Monolith)
定义
所有业务功能都放在一个项目里面。
例如:
商城项目├── 用户├── 商品├── 订单├── 支付├── 评价├── 优惠券└── 积分
适用场景
- 小项目
- 用户少
- 功能简单
大项目存在的问题
随着业务越来越多:
新增:
- 购物车
- 收藏
- 优惠券
- 支付
- 秒杀
- 评论
结果:
- 项目越来越大
- 代码高度耦合
- 多人开发冲突严重
- 难维护
- 难扩容
2、微服务架构(MicroService)
定义
把一个大型系统拆成多个职责单一的小项目。
例如:
商城系统 ├── 商品服务├── 用户服务├── 订单服务├── 支付服务├── 库存服务├── 搜索服务└── 网关服务
多个服务共同组成完整系统。
微服务核心特点
① 单一职责
一个服务只负责一种业务。
例如:
商品服务:
- 商品查询
- 商品管理
订单服务:
- 创建订单
- 查询订单
支付服务:
- 支付
- 退款
② 独立部署
每个服务:
- 独立开发
- 独立测试
- 独立部署
- 独立运行
甚至:
运行在不同服务器
不同 Tomcat
③ 低耦合
优点:
- 代码量小
- 分工明确
- 多人协作方便
- 修改一个服务不会影响其它服务
互联网公司主流架构。
四、微服务拆分后面临的问题
课程重点解决四大难题。
1、服务如何拆?
例如:
订单属于谁?
库存属于谁?
优惠券属于谁?
如何划分服务边界?
2、跨服务调用
例如:
订单服务下单:
需要查询商品库存。
以前:
OrderService ↓ 调用 ProductService
属于本地方法调用。
拆分以后:
商品服务已经是另一个项目。
必须:
远程调用。
3、服务治理
几十个服务:
商品 订单 支付 库存 搜索 用户 物流 ……
每个都有:
IP
端口
实例数量
健康状态
如何统一管理?
4、服务路由
前端如果直接访问:
订单服务 商品服务 库存服务 支付服务
维护困难。
因此需要:
统一入口。
即:
API Gateway(网关)。
五、整套课程学习规划
第一阶段
前置课程:
- Maven Plus
- Docker
夯实基础。
第二阶段
核心实战:
黑马商城
从:
单体项目 -> 一步一步拆成微服务。
拆到哪里,学到哪里。遇到问题,立即解决。
企业主流技术
课程覆盖:
- 微服务统一认证
- 分布式事务
- 消息中间件
- 分布式搜索
解决真实企业问题:
例如:
支付一致性
订单超时关闭
库存扣减
消息可靠性
第三阶段(拔高)
课程最后两天:
学习:
- Redis 底层
- 微服务源码
- RPC 原理
- 高频面试题
教学思路
先:实战。
后:源码。
避免:
一开始就讲底层,打击学习积极性。
最终目标
能够:
- 独立搭建微服务项目
- 改造单体项目
- 熟练使用企业微服务组件
- 满足中高级 Java 招聘要求
第二部分:MyBatis-Plus(MP)课堂笔记
第一章 MP 基础认知
1、MP 定位
官方定义:
MyBatis 的增强工具。
官方 Slogan:
To be the best partner of MyBatis
说明:
MP:
不是替代 MyBatis。
而是在 MyBatis 基础上增强。
目标:
提高开发效率。
2、MP 三大特点
① 无侵入
只增强。
不修改。
原来的:
- Mapper
- XML
- SQL
全部可以继续使用。
② 自动 CRUD
开发中:
70% 都是:
增、删、改、查
MP:
自动生成。不用写 SQL。
③ 丰富扩展
内置:
- 代码生成器
- 分页插件
- 逻辑删除
- 枚举处理
- 插件体系
3、官方文档学习模块
四部分:
- 快速入门
- 核心功能
- 高级扩展
- 插件功能
第二章 MP 快速入门
案例需求
实现:
- 新增用户
- 查询用户
- 批量查询
- 修改
- 删除
前置项目
已经提供:
- SpringBoot
- User 实体
- Mapper
- XML
- SQL
MP 使用两步
第一步
导入依赖:
xml<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId></dependency>
说明:
该 Starter:
已经包含:
MyBatis。
无需再次导入。
第二步
Mapper:
继承:
javapublic interface UserMapper extends BaseMapper<User> { }
注意:
必须指定:
泛型。
例如:
javaBaseMapper<User>
BaseMapper 内置 CRUD
新增:
javainsert()
删除:
javadeleteById() deleteBatchIds()
更新:
javaupdateById()
查询:
javaselectById() selectBatchIds()
MP 实战效果
原有:
Mapper
XML
全部正常。
甚至:
删除 XML。
删除 SQL。
仍然可以完成:
CRUD。
自动生成 SQL
新增:
sqlINSERT INTO user(...)VALUES(...)
更新:
自动:
忽略:
null 字段。
无需:
<if test="">
批量查询:
sqlSELECT *FROM userWHERE id IN (?, ?, ?)
整个过程:
无需写 SQL。
第三章 自动生成 SQL 原理 + 三大注解
一、自动识别表字段
核心:
反射 + 默认约定
默认规则:
实体:
UserInfo
自动对应:
textuser_info
字段:
createTime
自动对应:
textcreate_time
字段:
id
默认:
主键。
二、三大核心注解
① @TableName
指定表名。
例如:
java@TableName("tb_user")public class User { }
适用于:
实体名
≠
数据库表名。
② @TableId
指定:
主键。
例如:
java@TableIdprivate Long uid;
主键策略
AUTO
数据库自增。
java@TableId(type = IdType.AUTO)
INPUT
自己赋值。
javauser.setId(100);
ASSIGN_ID
默认。
MP:
雪花算法。
自动生成:
Long 类型主键。
③ @TableField
四种场景。
字段名不同
java@TableField("user_name")private String name;
Boolean
java@TableField("is_married")private Boolean isMarried;
SQL 关键字
java@TableField("`order`")private Integer order;
不存在数据库字段
java@TableField(exist = false)private String address;
第四章 MP 配置文件
一、MyBatis 配置
统一:
yamlmybatis-plus:
常用:
yamltype-aliases-package:
实体扫描。
yamlmapper-locations:
Mapper XML。
yamlmap-underscore-to-camel-case:
驼峰转换。
默认:
开启。
yamlcache-enabled:
二级缓存。
默认:
false。
二、MP 全局配置
yamlmybatis-plus: global-config: db-config:
例如:
主键策略:
yamlid-type:
更新策略:
yamlupdate-strategy:
默认:
NOT_NULL。
三、配置要点
以前:
yamlmybatis:
全部改成:
yamlmybatis-plus:
大多数配置:
都有默认值。
开发中:
很少修改。
第五章 MP 使用流程总结
第一步
导入:
xmlmybatis-plus-boot-starter
删除:
原生:
MyBatis Starter。
第二步
Mapper:
继承:
javaBaseMapper<User>
第三步
遵循默认映射规则:
- 类名
- 字段名
- id
自动映射。
如果不满足:
使用:
@TableName@TableId@TableField
第四步
特殊配置:
修改:
yamlmybatis-plus:
例如:
- 主键策略
- 更新策略
第五步
复杂业务:
仍然可以:
手写:
XML
SQL。
MP:
与原生 MyBatis:
完全兼容。
本章总结
MyBatis-Plus 核心优势:
✅ 无侵入增强 MyBatis
✅ 自动 CRUD
✅ 无需手写 SQL
✅ 默认约定自动映射
✅ 三大核心注解:
@TableName@TableId@TableField
✅ 支持全局配置
✅ 与 MyBatis 无缝兼容
开发效率可提升数倍,是目前 Java 企业开发中最常用的 ORM 增强框架之一。

