966 字
约 3 分钟
5
S08-X02 · MyBatis 八股速查
定位:附录索引。题 → 一句话答案 → 正文位置。
覆盖旧文:2317(427) 2617(279) + A-1758(→S07)= 787 点。
上一篇:S08-A03 · ORM 选型:MyBatis vs JPA/Hibernate
下一篇:S11 · 数据库与 SQL(下一系列)。
1. 原理与架构(对应 B01)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 1 | Mapper 为什么不用实现类 | JDK 动态代理 + statementId | B01 §2 |
| 2 | statementId 怎么构成 | 接口全名.方法名 |
B01 §2 |
| 3 | 三种 Executor | SIMPLE/REUSE/BATCH | B01 §3 |
| 4 | MyBatis 工作流程 | 配置→MappedStatement→代理→Executor→映射 | B01 §5 |
| 5 | 与 Spring 怎么整合 | SqlSessionFactoryBean + @MapperScan + SqlSessionTemplate |
B01 §4 |
| 6 | 为什么业务逻辑不能写 Mapper | 接口没有方法体 | B01 §2 |
2. 参数、结果与 SQL(对应 B02/B03)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 7 | #{} 与 ${} |
预编译占位 vs 字符串拼接 | B02 §1 |
| 8 | ${} 的注入风险(实测) |
注入串 → 全表 3 行 | B02 §2 |
| 9 | ${} 合法用途 |
动态表名/排序列(白名单) | B02 §3 |
| 10 | 驼峰映射怎么开 | map-underscore-to-camel-case |
B02 §4 |
| 11 | 多参数不加 @Param |
BindingException |
B02 §5 |
| 12 | 动态 SQL 标签 | if/choose/where/set/foreach/trim | B03 §2 |
| 13 | <where> 不解决什么 |
条件全空 → 全表 | B03 §4 |
3. MyBatis-Plus(对应 B04/B05/J01/J04)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 14 | MP 与 MyBatis 关系 | 增强,不是替代 | B04 §1 |
| 15 | 逻辑删除是什么 SQL | UPDATE ... SET deleted=1 |
B04 §3 |
| 16 | 乐观锁多什么条件 | and version=? + 拦截器 |
B04 §4 |
| 17 | 怎么打印 SQL | log-impl=StdOutImpl |
B04 §5 |
| 18 | Wrapper 安全吗 | apply 拼接不安全 |
B05 §4 |
| 19 | 分页插件发几条 SQL | count + list(实测) | J01 §1 |
| 20 | 深翻为什么慢 | offset 线性扫描 | J01 §3 |
| 21 | 批量最优做法 | 多值 insert(一条 SQL) | J04 §2 |
| 22 | MP "SQL 注入器"是什么 | 把方法注入 Mapper 的扩展 | J04 §3 |
4. 缓存与插件(对应 J02/J03)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 23 | 一级缓存作用域 | SqlSession(Spring 下多在事务内) | J03 §2 |
| 24 | 二级缓存前提 | 可序列化 + 同 namespace | J03 §3 |
| 25 | 二级缓存最大的坑 | 跨表更新不联动清理 | J03 §3 |
| 26 | 插件能拦哪四处 | Executor/StatementHandler/ParameterHandler/ResultSetHandler | J02 §1 |
| 27 | 延迟加载何时抛异常 | 事务外访问 | J03 §4 |
5. 架构(对应 A01–A03)
| # | 问题 | 一句话答案 | 正文 |
|---|---|---|---|
| 28 | 分库分表前先试什么 | 索引/归档/读写分离 | A01 §1 |
| 29 | 分片键怎么选 | 80% 查询带的字段 | A01 §3 |
| 30 | 分片数为何取 2 的幂 | 取模与扩容方便 | A01 §4 |
| 31 | 分完后的五个新问题 | 跨库 JOIN/分布式事务/分页/全局 ID/聚合 | A01 §5 |
| 32 | 动态数据源怎么实现 | AbstractRoutingDataSource + ThreadLocal |
A02 §2 |
| 33 | 事务内能切数据源吗 | 不能(连接已绑定) | A02 §3 |
| 34 | MyBatis vs JPA | 手写 SQL vs 生成 SQL | A03 §1 |
6. 跨系列登记
| 卡 | 内容 | 去向 |
|---|---|---|
| A-1758 | SpringBoot 校验两种方式 | S07-B06 |
| A-1185 | MP 代码生成器 | S06-J03(已认领) |
本篇属于系列《S08 · MyBatis 持久层》,是基础层附录。
S08-X02 · MyBatis 八股速查
https://www.clxhxhhr.top/posts/5298/ 评论
0 条
还没有评论,先写一条吧。