MyBatis源码解析(一)——执行流程

原创作品,可以转载,但是要标注出处地址:http://www.cnblogs.com/V1haoge/p/6603926.html

一、MyBatis简介

  MyBatis框架是千篇一律栽轻量级的ORM框架,当下非常流行,配合Spring+Spring
MVC组成SSM框架,能够独当一面几乎拥有的web项目工程。

  MyBatis不同于Hibernate的最为紧要的地方便是SQL部分,MyBatis中您可好编辑灵活的SQL代码,而于Hibernate基本上以SQL代码封装起来的,几乎无会见就此到程序员去编写,这是Hibernate的精粹的处在(简化了次开发),同时为是其病脚(无法活开发)。

  MyBatis的轻量级是相对于Hibernate的重量级而言之,它并从未完全封装,将SQL的修开放给程序员,虽然带来了复杂,但是以也带了灵活性。而针对性我们程序员而言,完全可以靠技术来忽略这些纷繁,专注让该灵活性。

亚、MyBatis的推行流程

  MyBatis的履行流程如下图:

  图片 1

  这张图是我之私家了解,参考了人家的硕果,也带在团结之想法

  解析:

  Configuration.xml:该配置文件是MyBatis的全局配置文件,在斯文件中好安排诸多门类,但是一般项目遭到,并无会见安排太多内容,常用的情是别名设置,拦截器设置等,至于环境设置和Mapper映射文件之注册会转移至Spring配置文件被(SSM整合后),而任何大部底配置起都使用默认的配备。

  XMLConfigBuilder:该类是XML配置构建者类,是因此来通过XML配置文件来构建Configuration对象实例,构建的历程即是解析Configuration.xml配置文件之长河,期间会以由配置文件被得到到之指定标签的价值依次个上加到之前创建好之默认Configuration对象实例中。

  Configuration:该类是MyBatis的安排类似,创建是仿佛的目的就是为利用那目标作为项目全局配置对象,这样经过配备文件配置的消息方可保存于斯布局对象吃,而者布局对象在开立好后是保留于JVM的Heap内存中的,方便随时读取。不然老是要配备信息之下还设临时从磁盘配置文件中落,代码复用性差的同时,也不便利开发。

  SqlSessionFactoryBuilder:该类是SqlSessionFactory(会话工厂)的构建者类,之前描述的操作实际全是起这里面被之,首先就是是调用XMLConfigBuilder类的构造器来创造一个XML配置构建器对象,利用是构建器对象来调动用该分析方法parse()来成功Configuration对象的创始,之后为之布局对象啊参数调用会话工厂构建者类吃的build(Configuration
config)方法来完成会话工厂对象的构建。

  SqlsessionFactory:该接口是碰头讲话工厂,是因此来生产会话的厂子接口,DefaultSqlSessionFactory是实际现类,是真生产会话的厂类,这个看似的实例的生命周期是全局的,它不过会于首不善调整用时很成一个实例(单例模式),就直有直到服务器关闭。

  openSession():在结尾之build(Configuration
config)方法中见面回去一个DefaultSqlSessionFactory类的实例,这个仿佛是MyBatis提供的默认会话工厂类,而我们用的为多亏这个看似中的来openSession()方法来成功SqlSession对象的创。

  SqlSession:该接口是对话,是项目及数据库中的对话,类似于客户端和服务器之间的对话(session),这个SqlSession的生命周期是办法级的,因为他是非线程安全之,针对各个一样次等数据库访问都如开创一个SqlSession,获取到回结果过后,这个SqlSession就见面给抛弃。这分别为SqlSessionFactory的生命周期。

  Executor:执行器接口,SqlSession会话是面向程序员的,而中真正实行数据库操作的可是Executor执行器,可以用Executor看作是面向MyBatis执行环境的,SqlSession就是家面货,Executor才是实干家。通过SqlSession产生的数据库操作,全部凡经过调用Executor执行器来成功的。

  StatementHandler:该类是Statement处理器,封装了Statement的各种数据库操作方法execute(),可见MyBatis其实就是拿操作数据库的JDBC操作封装起的一个框架,同时还落实了ORM罢了。

  ResultSetHandler:结果集计算机,如果是询问操作,必定会来返回结果,针对返回结果的操作,就要动用ResultSetHandler来进展拍卖,这个是由于StatementHandler来开展调用的。这个处理器的意向就是是针对性回到结果开展处理。

  (未完待续)

 

网站地图xml地图