微服务实战课程 —— MyBatis-Plus 入门

2026-07-20wei👁 15 阅读8 分钟阅读📝 3504 字💬 0 评论
微服务实战课程 —— MyBatis-Plus 入门

微服务实战课程 + 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、官方文档学习模块

四部分:

  1. 快速入门
  2. 核心功能
  3. 高级扩展
  4. 插件功能

第二章 MP 快速入门

案例需求

实现:

  • 新增用户
  • 查询用户
  • 批量查询
  • 修改
  • 删除

前置项目

已经提供:

  • SpringBoot
  • User 实体
  • Mapper
  • XML
  • SQL

MP 使用两步

第一步

导入依赖:

xml
<dependency>    <groupId>com.baomidou</groupId>    <artifactId>mybatis-plus-boot-starter</artifactId></dependency> 

说明:

该 Starter:

已经包含:

MyBatis。

无需再次导入。


第二步

Mapper:

继承:

java
public interface UserMapper extends BaseMapper<User> { } 

注意:

必须指定:

泛型。

例如:

java
BaseMapper<User> 

BaseMapper 内置 CRUD

新增:

java
insert() 

删除:

java
deleteById() deleteBatchIds() 

更新:

java
updateById() 

查询:

java
selectById() selectBatchIds() 

MP 实战效果

原有:

Mapper

XML

全部正常。

甚至:

删除 XML。

删除 SQL。

仍然可以完成:

CRUD。


自动生成 SQL

新增:

sql
INSERT INTO user(...)VALUES(...) 

更新:

自动:

忽略:

null 字段。

无需:

<if test=""> 

批量查询:

sql
SELECT *FROM userWHERE id IN (?, ?, ?) 

整个过程:

无需写 SQL。


第三章 自动生成 SQL 原理 + 三大注解

一、自动识别表字段

核心:

反射 + 默认约定 

默认规则:

实体:

UserInfo 

自动对应:

text
user_info 

字段:

createTime 

自动对应:

text
create_time 

字段:

id 

默认:

主键。


二、三大核心注解

① @TableName

指定表名。

例如:

java
@TableName("tb_user")public class User { } 

适用于:

实体名

数据库表名。


② @TableId

指定:

主键。

例如:

java
@TableIdprivate Long uid; 

主键策略

AUTO

数据库自增。

java
@TableId(type = IdType.AUTO) 

INPUT

自己赋值。

java
user.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 配置

统一:

yaml
mybatis-plus: 

常用:

yaml
type-aliases-package: 

实体扫描。


yaml
mapper-locations: 

Mapper XML。


yaml
map-underscore-to-camel-case: 

驼峰转换。

默认:

开启。


yaml
cache-enabled: 

二级缓存。

默认:

false。


二、MP 全局配置

yaml
mybatis-plus:  global-config:    db-config: 

例如:

主键策略:

yaml
id-type: 

更新策略:

yaml
update-strategy: 

默认:

NOT_NULL。


三、配置要点

以前:

yaml
mybatis: 

全部改成:

yaml
mybatis-plus: 

大多数配置:

都有默认值。

开发中:

很少修改。


第五章 MP 使用流程总结

第一步

导入:

xml
mybatis-plus-boot-starter 

删除:

原生:

MyBatis Starter。


第二步

Mapper:

继承:

java
BaseMapper<User> 

第三步

遵循默认映射规则:

  • 类名
  • 字段名
  • id

自动映射。

如果不满足:

使用:

  • @TableName
  • @TableId
  • @TableField

第四步

特殊配置:

修改:

yaml
mybatis-plus: 

例如:

  • 主键策略
  • 更新策略

第五步

复杂业务:

仍然可以:

手写:

XML

SQL。

MP:

与原生 MyBatis:

完全兼容。


本章总结

MyBatis-Plus 核心优势:

✅ 无侵入增强 MyBatis

✅ 自动 CRUD

✅ 无需手写 SQL

✅ 默认约定自动映射

✅ 三大核心注解:

  • @TableName
  • @TableId
  • @TableField

✅ 支持全局配置

✅ 与 MyBatis 无缝兼容

开发效率可提升数倍,是目前 Java 企业开发中最常用的 ORM 增强框架之一。

wei
技术博客作者
3504 字 · 0 评论
2026-07-20

评论 (0)

暂无评论,来写第一条吧

登录后发表评论

分类

友链

关于本站

用 SpringBoot + Nuxt3 搭建的个人技术博客,记录编程之路的思考与收获。

© 2026 好啵博客 · Built with ❤️ & SpringBoot + Nuxt3