MyBatis 进阶特性笔记

AI-摘要
LNotes-AI GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
MyBatis 进阶特性笔记
Liuxz一、缓存机制
MyBatis 提供二级缓存机制,用于提升查询性能:
| 缓存级别 | 作用范围 | 开启方式 | 特点 |
|---|---|---|---|
| 一级缓存 | 单个 SqlSession(当前事务共享) | 默认开启 | 生命周期与 SqlSession 一致,查询结果自动缓存 |
| 二级缓存 | 多个 SqlSession(所有事务共享) | 需手动配置开启 | 跨 SqlSession 共享,需实体类实现序列化 |
缓存特性对比
| 维度 | 一级缓存 | 二级缓存 |
|---|---|---|
| 作用域 | 小 | 大 |
| 与数据库距离 | 近 | 远 |
| 访问速度 | 快 | 慢 |
| 缓存容量 | 小 | 大 |
| 命中率 | 高 | 低 |
二、插件机制
MyBatis 基于拦截器(Interceptor) 实现插件功能,可对以下四大核心对象进行拦截增强:
ParameterHandler:参数处理ResultSetHandler:结果集处理StatementHandler:SQL 语句处理Executor:执行器(SQL 执行逻辑)
作用:在 SQL 执行的全生命周期(如参数解析、结果封装、SQL 执行前后)插入自定义逻辑,实现功能扩展(如分页、SQL 监控)。
三、PageHelper 分页插件
PageHelper 是 MyBatis 生态中主流的分页插件,基于 MyBatis 插件机制实现,自动对查询 SQL 进行分页改写。
核心原理
通过拦截 Executor 或 StatementHandler,在 SQL 执行前自动拼接 LIMIT 语句(或数据库方言对应的分页语法)。
分页参数
pageNum:当前页码pageSize:每页条数startIndex:分页起始索引(公式:startIndex = (pageNum - 1) * pageSize)
四、MyBatisX 逆向生成
MyBatisX 是 IDEA 插件,支持根据数据库表一键生成 MyBatis 开发所需的:
- 实体类(Entity)
- Mapper 接口
- Mapper XML 文件
- 基础 CRUD 代码
生成步骤
- 配置生成选项:
module path:模块路径base package:基础包名relative package:实体类 / 接口的相对包路径(如entity、mapper)tableName:数据库表名className:生成的类名策略(驼峰或与表名一致)
- 选择注解、模板:
- 注解支持:MyBatis-Plus、JPA 等
- 模板选择:
default-all(生成完整 CRUD 代码)或default-empty(生成空结构) - 可选配置:Lombok 支持、toString/hashCode/equals 方法生成等
五、各特性价值总结
| 特性 | 核心价值 | 适用场景 |
|---|---|---|
| 缓存机制 | 减少数据库访问,提升查询性能 | 读多写少的业务场景 |
| 插件机制 | 无侵入扩展 MyBatis 核心流程 | 分页、SQL 监控、数据脱敏等 |
| PageHelper 分页 | 简化分页逻辑,自动生成分页 SQL | 所有需要分页的查询场景 |
| MyBatisX 逆向生成 | 自动生成基础 CRUD 代码,提升开发效率 | 新项目初始化、表结构变更后 |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果



