【MyBatis源码解读】项目结构分析

  |   0 评论   |   437 浏览

源码分析版本为3.4.6

为什么使用mybatis

框架 优点 缺点
jdbc 简单、纯粹 1、需要手动关闭链接 2、结果集不能自动映谢 3、安全问题都要自己实现
jdbcTemplate 简单、纯粹、自动会话管理、结果集映谢 手动拼装SQL管理混乱
hibernate 编程效率高,无需编写sql。数据库更换成本低、较完善的二级缓存、自动防SQL注入 完全掌握的门槛高、性能优化较麻烦、复杂映谢
mybatis 学习成本低、可以进行更为细致的SQL优化,减少查询字段、统一的SQL管理、性能较高 功能相对简陋、需要手动编写维护SQL、表结构变更之后需要手动维护SQL与映谢、需较强的SQL编写能力

比较这几个框架之后,可以看出mybatis的优点还是很多的,如果你的系统需要性能比较高,开发成本低的话,那么可以选择mybatis。

获取源码

代码地址:
https://github.com/mybatis/mybatis-3.git
建议fork到自己的github上,方便提交一些学习记录。
然后通过git命令或者idea下载下来。那么接下来你就可以开启mybatis的源码之旅了。

环境搭建

之前搭了一个springboot+mybatis项目:
springboot+mybatis

项目整体一览

11111png

mybatis架构分层

主要分三层,其中包括:接口层、核心处理层、基础层。
imagepng

核心类

SqlSessionFactoryBuilder:用来构建SqlSessionFactory,创建完之后,最好把它释放掉。它的最佳作用域是方法作用域(即局部方法变量)。
SqlSessionFactory:它是SqlSession的工厂类。创建完之后就不要被销毁了。只要创建一个就好了,如果项目中创建了多个,那肯定是不合理的。它的最佳作用域是应用作用域,可以使用单例模式或者静态单例模式来创建。
SqlSession:包含了面向数据库执行 SQL 命令所需的所有方法,可以执行已经映射了的sql语句。每个线程都应该有它自己的 SqlSession 实例。它不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。通俗的说,每次收到的 HTTP 请求,就可以打开一个 SqlSession,返回一个响应,就关闭它。应该把这个关闭放到finally里。
SQL Mapper:映射器是一个你创建来绑定你映射的语句的接口。它的作用域与SqlSession相同。

mybatis执行流程

imagepng

mybatis学习指南

imagepng

也可以关注我的公众号:程序之声

关注公众号,领取更多资源

本文为博主原创文章,未经博主允许不得转载。

评论

发表评论