面试速查:MyBatis 面试题 37 道 · 前置 JDBC
实战笔记(建议顺序)
| 顺序 | 笔记 | 内容 |
|---|---|---|
| 1 | 环境与 Mapper | pom.xml、mybatis-config.xml、Mapper 接口与 XML |
| 2 | user 表 CRUD | SqlSession 增删改查 |
| 3 | 动态 SQL | if / where / foreach |
| 4 | 事务与批量 | commit/rollback、ExecutorType.BATCH |
库表与 JDBC 共用:见 JDBC 环境与 user 表 中的 schema.sql、seed.sql。
是什么
MyBatis 封装 JDBC:你写 SQL(XML/注解),框架做参数绑定与结果映射。相比 Hibernate 全自动 ORM,SQL 可控、易优化。
面试常问速记(1 年岗)
| 考点 | 要点 |
|---|---|
#{} vs ${} | #{} 预编译防注入;${} 字符串拼接,仅动态表名/列名 |
| 动态 SQL | <if>、<where>、<foreach> |
| Mapper 与 XML | namespace = 接口全名;标签 id = 接口方法名 |
| 与 Spring | @MapperScan + mapper-locations |
→ 实战 环境与 Mapper · 动态 SQL
一次调用链路
mybatis-config.xml + UserMapper.xml → SqlSessionFactory → SqlSession → UserMapper 接口(JDK 动态代理) → Executor 执行 SQL → 映射为 User与 JDBC / Hibernate
| JDBC | MyBatis | Hibernate | |
|---|---|---|---|
| SQL | 全手写 + 样板代码 | 手写 + 映射 | 多数自动生成 |
| 结果映射 | 手写 mapRow | resultMap / 驼峰 | 注解实体 |
增强层:MyBatis-Plus 概述(单表 CRUD 代码更少,复杂 SQL 仍用 MyBatis XML)。
Executor(面试)
| 类型 | 行为 |
|---|---|
| SIMPLE | 每次新建 Statement |
| REUSE | 复用 Statement |
| BATCH | 批量 addBatch,适合大批量 insert |
Spring Boot 集成见 Spring Boot Web 与运维。