![67f5f548564f4f1d50e2594a280ad484.png](https://i-blog.csdnimg.cn/blog_migrate/5dccdcdd29f4a8db45f1dee361c82faa.jpeg)
Mybatis 介绍:
框架的作用:
![fb856e0a885232f44835268ba240498b.png](https://i-blog.csdnimg.cn/blog_migrate/b6903b94ae8d1a9ef86b9942ecc38ad2.jpeg)
Mybatis是一个数据持久层框架(dao层),数据持久化,将数据从内存中存储到硬盘中
Mybatis是什么
![f11ce4e4e33fd96f9e44e8d88a210c95.png](https://i-blog.csdnimg.cn/blog_migrate/52b455d14cf126a0a42d0fb285509c52.jpeg)
框架的特点:
Jdbc的缺点:
- 代码重复性高,反复的建立连接
- Sql语句,采用硬编码,sql语句写在java代码中
- 参数的植入,它跟java的耦合性高
- 结果集的处理非常的麻烦
和Hibernate对比:
- Hibernate是全自动的,MyBatis是半自动的 Hibernate实现了部分自动生成SQL
- MyBatis真正实现了java代码和sql的分离
- SQL优化上 MyBatis强于Hibernate
- MyBatis优化维护方便 SQL全存在于XML中 不需要修改源代码
- 开发效率上 Hibernate略强于mybatiss
- 从性能上说 因为Mybatis全都是自己手写的SQL,因此性能相对较高反之。Hibernate更加提倡使用HQL,HQL往往会查询更多的字段,从而性能反而较低
Mybatis优点:
- 让程序员只关注,sql语句不需要去关注对应的代码
- 帮助我们处理结果集
Mybatis核心流程三大阶段
- 始化阶段:读取XML配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始化的工作
- 代理阶段:封装iBatis的编程模型,使用mapper接口开发的初始化工作
- 数据读写阶段:通过SqlSession完成SQL的解析,参数的映射、SQL的执行、结果的反射解析过程
![f4fe73c21d364518d83ad1caf37dbaa6.png](https://i-blog.csdnimg.cn/blog_migrate/42a67c5e3233b06ae3a9766009477473.jpeg)
简化版Mybatis实现思路
![78df64a57695fc2fcafbb6d25b781612.png](https://i-blog.csdnimg.cn/blog_migrate/239ccf228492b3143d39639561ad1d29.jpeg)
mybatis工作原理图
![9f11bafcb640a40d118ec7c80737553a.png](https://i-blog.csdnimg.cn/blog_migrate/35b76faefb1542e2dbc1bbf49053f856.jpeg)
在这里分享一位国防科大的架构师朋友他录制的“手写MyBatis,直击优秀开源框架灵魂”专题视频,对于面试中的难点-mybatis这块,是很好的补充。
视频内容如下:
1.快速入门360度了解MyBatis;
2.解密MyBatis核心流程;
3.1!2!3!手写MyBatis完毕!
4.为什么要要练“九阳真经”?
![ec23b36c34d8bad2fce20356dd8febce.png](https://i-blog.csdnimg.cn/blog_migrate/6d24a4939b8b183900449de06397c1c6.jpeg)
![b810d89074c9de704462af9a3f8cddf0.png](https://i-blog.csdnimg.cn/blog_migrate/21298ac5c7a14e2f8338a8e24665ca0c.jpeg)
![55186e979383e57bfbf20cb33b8002f1.png](https://i-blog.csdnimg.cn/blog_migrate/5c3c90c6e6d6d96cb9226a09b8323ad8.jpeg)
感兴趣的朋友可以后台私信我关键字【Mybatis资料】,即可免费获取!