MyBatis 是「半自动」ORM:SQL 由开发者手写,框架只负责把参数塞进 SQL、把结果集映射成对象。它不做对象与表的自动翻译,换来的是对 SQL 的完全掌控。在复杂查询、报表、遗留库场景里,这种掌控力往往比「少写 SQL」更有价值。
1. 定位与整体流程
MyBatis 的核心价值链只有一句话:SQL 你写,映射它管。一个查询从调用到返回,经过这些环节:
Mapper 接口方法调用
│(JDK 动态代理拦截)
▼
MapperProxy → MapperMethod(解析方法签名)
▼
SqlSession → Executor(一级缓存 / 二级缓存 / 事务)
▼
MappedStatement(拿 SQL、参数映射、结果映射)
▼
StatementHandler → ParameterHandler(#{} → ?)→ ResultSetHandler(列 → 属性)
2026/10/11大约 8 分钟