博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis 源码分析——介绍
阅读量:4972 次
发布时间:2019-06-12

本文共 3118 字,大约阅读时间需要 10 分钟。

笔者第一次接触跟MyBatis框架是在2009年未的时候。不过那个时候的他并不叫MyBatis,而是叫IBatis。2010年的时候改为现在的名字——MyBatis。这几年过去了,对于笔者来讲有一点陌生了。而且那个时候他也没有这么出名。hibernate占了大部分市场。虽然笔者早年的时候查看过他的源码,但是并没有很深入去理解他。主要的原因是因为当时我还在看hibernate的源码。太累了所以就没有去认真的理解。现在笔者想要重新在来看一篇关于他的源码并加强对他的理解。也是对自己过程的一种回归吧。

想要查看源码就要先了解他的一些概念。否则云里来雾里去的什么也不懂。有很多朋友会选择去图书管买一些书来查看。当然这是可取的。那么如果不想的话,就可以去官网查看他们的介绍了——。笔者也会按照官网上面的介绍来进行源码上的查看。

ORM思想的传播述造了很多ORM框架。事实上笔者也想把MyBatis定义为ORM框架。但是开发的过程中笔者感觉最多的是他在管理SQL语句。虽然在最后的结果会应射出对应的实体对象。可是还是我觉得MyBatis的管理SQL语句才是这个框架的核心。官网的介绍划分为四块来介绍MyBatis——XML配置、XML映射文件、动态SQL、日志。对于开发人员来讲主要看完这四块就可以了。当然关于什么是ORM的话,这个笔者就不在做什么相关的解释。网络上也有一片的资料足够你学习的。

学习环境


MyBatis源码:.

数据库:SQL SERVER 2008

开发工具:Ecilpse,Maven

Java:1.8

开发环境


官网上也有写一个篇关于入门的文章。 只是讲的可能简单了一点。但是这并不是没有任何作用。笔者用的是Maven来引入MyBatis的源码的。虽然他有自带的测试代码,不过笔者还是希望读者们能自己在新建一个项目来学习。这样子方便自己动手做一些测试来加深映像。虽然可以用Maven来构建JAR。但是笔者没有这样子做。而是新建的项目里面引用MyBatis的源码。相信大家对Ecilpse里面的Build Path的Projects选择卡并不陌生。这样子方便查看源码,而不是在从JAR包中关联对应的源码。

上面的图片便是笔者导入之后项目源码。事实对我们学习最快最有用的应该是test这个部分的例子。你完全可以从例子中找到你不知道如何使用的功能点。

有了上面的源码,当然笔者也会简单的测试一下这个源码有没有错,能不能用。如下代码

public static void main(String[] args) {        try {                        System.out.println("开始mybatis实验");                        String resource = "mybatis-config.xml";            InputStream inputStream = Resources.getResourceAsStream(resource);            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);            SqlSession session = sqlSessionFactory.openSession();            IProductMapper dao = session.getMapper(IProductMapper.class);                        List
products = dao.SelectProducts(30); session.close(); System.out.println("结束mybatis实验"); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }

相信没有用看不懂这段代码。事实上我们可以知道想要用MyBatis就离不开他相关的配置信息。相对的MyBatis而言笔者觉得还是比较简的。笔者的例子项目里面有一个文件叫mybatis-config.xml文件。相信大家看了就知道他的作用。jdbc.properties这个文件是存放了相关的数据库配置信息。可有可无,如果不要的话,就直接接在dataSource节点上直接修改数据库信息。

想要研究一个源码框架一定要找到切入口。从上面的例子代码中我们可以充分的分析出——SqlSessionFactoryBuilder类就是源码的切入口。相信大家可能会想到常用的JAVA模式中的一种叫Builder模式。通过SqlSessionFactoryBuilder类的build方法我们可以拿到一个相关的类——SqlSessionFactory类例化。实际就是DefaultSqlSessionFactory类。例子源码中我们可以看到后面的操作一定离不开SqlSession接口实例。而从名字上来讲,我们可以猜出SqlSessionFactory类好像是SqlSession接口的工厂类吧。当然这还要回头看一下源码才能确定。

在实例的开发过程中,我们一定会用到一个用于配置对象实体相关的配置文件。就是上面XML信息中的Mapper节点部分的信息。如下

MyBatis的亮点笔者认为就是管理SQL语句。不然笔者真觉得MyBatis好像也没有多大的优点。而类似上面的XML文件中就是存放SQL语句。当然一个实体对象可能对应一个XML文件。例如笔者写的例子一样子。如下

关于如何管理SQL语句的话,笔者觉得你去查看官网来的更实际一点。而笔者想要讲的是不管是上面的XML配置文件,还是对实体的增删改查都离不开上面的SqlSession接口实例。看样子我们很清楚只要知道SqlSession接口实例的工作原理,就可以说理解了70%的MyBatis概念。

 

转载于:https://www.cnblogs.com/hayasi/p/6142638.html

你可能感兴趣的文章
二维几何常用运算
查看>>
POJ 1904 King's Quest (强连通分量+完美匹配)
查看>>
webstorm预览时把浏览器地址localhost改成IP
查看>>
Oracle单机Rman笔记[5]---脱机异地还原
查看>>
php无缝连接滚动
查看>>
MR案例:多文件输出MultipleOutputs
查看>>
拦截器的四种拦截方式以及Filter的执行顺序(17/4/8)
查看>>
自己实现线程池
查看>>
无法加载 Parallels 驱动器
查看>>
登录后跳转到登录前的页面
查看>>
为什么在进行Full GC之前最好进行一次Minor GC
查看>>
atom常用快捷键-mac亲测
查看>>
一个小玩具:NDK编译SDL的例子
查看>>
代码面试之串(转载)
查看>>
基于TCP协议的项目架构之Socket流传输的实现
查看>>
【转】Python读取PDF文档,输出内容
查看>>
C#小知识点记录,对象的深拷贝
查看>>
Linux C Socket编程:文件上传
查看>>
The wealthiest/richest men in the world
查看>>
AFNetworking图片上传
查看>>