MyBatis 是 Java 中非常常用的持久层框架,它的核心作用是:把 Java 对象和 SQL 语句映射起来,简化 JDBC 操作。下面用“原理 + 流程”给你讲清楚。
传统 JDBC 的问题:
MyBatis 的做法:
Java 程序
↓
SqlSessionFactory
↓
SqlSession
↓
Executor(执行器)
↓
StatementHandler
↓
JDBC
① 读取配置
mybatis-config.xml② 解析成 Configuration 对象
③ 创建 SqlSessionFactory
SqlSessionFactory factory =
new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = factory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectById(1);
背后发生了什么?
UserMapper mapper = session.getMapper(UserMapper.class);
UserMapper 接口并没有实现类<select id="selectById" resultType="User">
select * from user where id = #{id}
</select>
@Select("select * from user where id = #{id}")
User selectById(int id);
| 组件 | 作用 |
|---|---|
| Configuration | 全局配置 |
| SqlSessionFactory | 创建 Session |
| SqlSession | 一次数据库会话 |
| Executor | 执行 SQL |
| MapperProxy | 接口代理 |
| TypeHandler | Java ↔ JDBC 类型转换 |
| ResultMap | 结果映射 |
对比:
MyBatis 本质就是:用动态代理 + JDBC 封装,把 SQL 和 Java 方法绑定,自动完成参数传递和结果映射。
如果你愿意,我也可以:
你想往哪方面深入?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。