首页
学习
活动
专区
工具
TVP
发布

MyBatis源码阅读准备

导读:阅读源码是提升自己代码能力的一个非常重要的手段,但是源码阅读有时候也非常麻烦,一定要找到入口点,然后动态地去看代码,一步步调试然后画图做笔记记录,才能在一团乱中清理出一个道路来。这篇文章介绍了我在阅读Mybatis源码的准备过程。

Mybatis简介

mybatis是一个流行的半自动映射框架,之所以称为半自动框架是因为它需要手工匹配Java类,SQL和映射关系,而全表映射的Hibernate只需要提供POJO和映射关系就可以了。区别如下表:

通过上表也可以看出,Hibenate无需编写SQL,所以开发效率优于Mybatis.此外,它提供缓存、日志、级联等功能。但是缺点也是十分明显,多表关联复杂的SQL,根据条件变化的SQL。存储过程等场景使用Hibenate非常不便,而性能又难以通过SQL优化。所以注定Hibernate只适用于场景不太复杂,要求性能不太苛刻的时候使用。如果你需要一个灵活的、可以动态生成映射关系的框架,那么MyBatis是一个最好的选择。

MyBatis组件以及执行基本流程

SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码生成SqlSessionFactory(工厂接口)

SqlSessionFactory:依靠工厂来生成SqlSession。

SqlSession:是一个既可以发送SQL去执行并返回结果的,也可以获取Mapper接口,通过Mapper接口查询并封装数据。

SQL Mapper:它是MyBatis新设计的组件,它是由一个Java接口和XML文件(或者注解)构成的,需要给出对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。

用下图表达上述组件之间的关联

mybatis源码阅读准备

github上有一个中文注释版的MyBatis源码。MyBatis中文链接

Mybatis是以maven管理的,依赖于Mybatis-parent模块。将mybatis导入到eclipse中时候,也需要将mybatis-parent模块导入。mybatis-parent模块链接

将模块mybatis,mybatis-parent模块导入到Eclipse中,接下来就通过mybatis的最基本的代码来调试并阅读mybatis源码。整个结构如下图。

通过《深入浅出MyBatis技术原理与实战》一书的代码来实现基本调试。代码的目录请看上图,代码的内容下面一一列出。

数据库表role

数据库表role对应的java类

java RoleMapper接口

RoleMapper

MyStringHandler

log4j.properties 配置文件

mybatis-config.xml 配置文件

阅读以及debug入口 (Main)

通过执行Main类,并设立断点,就可以一步一步进行源码的调试以及阅读了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180410G1SPU500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券