范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

MyBatis详解初始化基本过程

  MyBatis和数据库的交互有两种方式有Java API和Mapper接口两种,所以MyBatis的初始化必然也有两种;那么MyBatis是如何初始化的呢?  MyBatis初始化的方式及引入
  MyBatis的初始化可以有两种方式:基于XML配置文件:基于XML配置文件的方式是将MyBatis的所有配置信息放在XML文件中,MyBatis通过加载并XML配置文件,将配置文信息组装成内部的Configuration对象。基于Java API:这种方式不使用XML配置文件,需要MyBatis使用者在Java代码中,手动创建Configuration对象,然后将配置参数set 进入Configuration对象中。# 初始化方式 - XML配置
  现在就从使用MyBatis的简单例子入手,深入分析一下MyBatis是怎样完成初始化的,都初始化了什么。看以下代码:
  有过MyBatis使用经验的读者会知道,上述语句的作用是执行com.foo.bean.BlogMapper.queryAllBlogInfo 定义的SQL语句,返回一个List结果集。总的来说,上述代码经历了三个阶段(本系列也对应三篇文章分别讲解):mybatis初始化 创建SqlSession 执行SQL语句
  上述代码的功能是根据配置文件mybatis-config.xml 配置文件,创建SqlSessionFactory对象,然后产生SqlSession,执行SQL语句。而mybatis的初始化就发生在第三句:SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 现在就让我们看看第三句到底发生了什么。# MyBatis初始化基本过程:
  SqlSessionFactoryBuilder根据传入的数据流生成Configuration对象,然后根据Configuration对象创建默认的SqlSessionFactory实例。
  初始化的基本过程如下序列图所示:
  由上图所示,mybatis初始化要经过简单的以下几步:调用SqlSessionFactoryBuilder对象的build(inputStream)方法;SqlSessionFactoryBuilder会根据输入流inputStream等信息创建XMLConfigBuilder对象;SqlSessionFactoryBuilder调用XMLConfigBuilder对象的parse()方法;XMLConfigBuilder对象返回Configuration对象;SqlSessionFactoryBuilder根据Configuration对象创建一个DefaultSessionFactory对象;SqlSessionFactoryBuilder返回 DefaultSessionFactory对象给Client,供Client使用。
  SqlSessionFactoryBuilder相关的代码如下所示:
  上述的初始化过程中,涉及到了以下几个对象:SqlSessionFactoryBuilder : SqlSessionFactory的构造器,用于创建SqlSessionFactory,采用了Builder设计模式Configuration :该对象是mybatis-config.xml文件中所有mybatis配置信息SqlSessionFactory:SqlSession工厂类,以工厂形式创建SqlSession对象,采用了Factory工厂设计模式XmlConfigParser :负责将mybatis-config.xml配置文件解析成Configuration对象,共SqlSessonFactoryBuilder使用,创建SqlSessionFactory# 创建Configuration对象的过程
  接着上述的 MyBatis初始化基本过程讨论,当SqlSessionFactoryBuilder执行build()方法,调用了XMLConfigBuilder的parse()方法,然后返回了Configuration对象。那么parse()方法是如何处理XML文件,生成Configuration对象的呢?XMLConfigBuilder会将XML配置文件的信息转换为Document对象
  而XML配置定义文件DTD转换成XMLMapperEntityResolver对象,然后将二者封装到XpathParser对象中,XpathParser的作用是提供根据Xpath表达式获取基本的DOM节点Node信息的操作。如下图所示:
  之后XMLConfigBuilder调用parse()方法
  会从XPathParser中取出节点对应的Node对象,然后解析此Node节点的子Node:properties, settings, typeAliases,typeHandlers, objectFactory, objectWrapperFactory, plugins, environments,databaseIdProvider, mappers:
  注意:在上述代码中,还有一个非常重要的地方,就是解析XML配置文件子节点的方法mapperElements(root.evalNode("mappers")), 它将解析我们配置的Mapper.xml配置文件,Mapper配置文件可以说是MyBatis的核心,MyBatis的特性和理念都体现在此Mapper的配置和设计上。然后将这些值解析出来设置到Configuration对象中
  解析子节点的过程这里就不一一介绍了,用户可以参照MyBatis源码仔细揣摩,我们就看上述的environmentsElement(root.evalNode("environments")); 方法是如何将environments的信息解析出来,设置到Configuration对象中的:
  返回Configuration对象
  将上述的MyBatis初始化基本过程的序列图细化:
  初始化方式 - 基于Java API
  当然我们可以使用XMLConfigBuilder手动解析XML配置文件来创建Configuration对象,代码如下:

巴特勒2669阿德巴约2012,热火力克快船在今日的常规赛中,热火主场121114力克快船。快船62开局后塔克邓罗阿德巴约都得分,热火一波70反超。巴图姆连中三分后巴特勒连续得分,此后双方交替得分,最终首节热火2819领先。詹眉缺阵威少35分湖人不敌黄蜂湖人客场背靠背114117不敌黄蜂。詹姆斯戴维斯缺阵。黄蜂队海沃德乌布雷休战。鲍尔罗齐尔带队上来轰出,90。艾灵顿三分止血,但罗齐尔布里奇斯回敬70!之后鲍尔中投,华盛顿三分,黄蜂中国男足个人年薪高达1000万,超过女足整支队伍的年薪总额中国男足,实力球员年薪1200万,比整支女足收入总和还要多。而男足外援收入更能问鼎欧洲一线球星,年薪高达8000多万,中国男足任重道远,中国女足待遇是否应该提高?苏之力作网图侵删武殷桃晒海边冲浪美照,网友我的天啊!殷桃粉丝提早过年了殷桃晒海边冲浪美照,网友我直接喊救命好吧殷桃孙艺洲主演的都市情感电视剧幸福二重奏,目前正在中央电视台八套热播。此前,笔者发表了他与殷桃搭档演夫妻,观众都说像是一对真夫妻一文。昨天晚晓明baby离婚,众所周知的秘密官宣了,晓明和周子然?周子然是?惊呆了老铁,之前我可没少猜测黄晓明和baby离婚的事情。应该不影响大家过年吧?老婆和老公真的真的官宣离婚了。但是这件事情炒了一年了,吃起来有种食之无味弃之可惜的感觉。仅仅是一个一个还记得豆瓣三女神吗?十年后晚晚南笙张辛苑都怎么了如今说到网红这个词,想必大家第一时间想到的都是一些直播卖艺卖货卖人设的网红。他们个个变现能力超强,代表人物都有周扬青李佳琦等。但时间倒回到十年前,那个互联网匮乏的年代,在大量文艺青中国科学家正在论证研究探日计划发展太空旅游纳入五年规划(请点击读报纸或服务打开重庆晨报三版了解详情)中国科学家正在论证研究探日计划发展太空旅游纳入五年规划国新办发布第五部航天白皮书,为未来五年中国航天划重点全面建成并运营中国空间站实施马斯克火箭将撞向月球?中国撒出太空渔网成功完成捕获任务这几年人类的太空活动十分频繁,从火箭到卫星,发射了大量航天器,而这对太空已经构成一种污染,其中最大的污染源头就是马斯克的星链卫星。目前其已向太空中发射近2000颗卫星,占据大量太空让孩子成为最好的自己每个孩子生下来都是一张白纸,父母就是作画的人。白纸变成什么样,关键要看父母。没有天生不爱孩子的父母。但有些父母却因为不了解他的生理特点和心理机制,误解了他,将爱变成了伤害。其实,理单节12中1!威少令人失望,安东尼成组织核心,沃格尔害惨湖人单节12中1!威少令人失望,安东尼成组织核心,沃格尔害惨湖人!北京时间1月29日,湖人客场挑战黄蜂,上一场输给76人之后,湖人迎来背靠背的挑战,本场比赛詹姆斯和浓眉因伤缺战,注定是赵心童颜丙涛晋级!中国两猛将淘汰世界前二!决赛中国德比可期北京时间2022年1月29日,斯诺克德国大师赛四分之一决赛的比赛已经全部。马克艾伦赵心童利基瓦尔登和颜丙涛晋级半决赛。在半决赛中,赵心童将对阵利基瓦尔登,马克艾伦将对阵颜丙涛。四分
拒绝摆烂!爵士专克劲旅少帅造平民军团奇迹爵士真的放弃抢状元签了吗?这支在外界被公认为很可能摆烂的球队,竟然一路高歌猛进,取得8胜3负的战绩位居西部第二的位置。爵士送走了米切尔戈贝尔和博扬博格达诺维奇三位球星,但本赛季的走同样是贵妇品牌,为啥赫莲娜比lamer更受欢迎?主要因为这个原因爱美是女人的天性,通过护肤品使自己的皮肤变得年轻紧致,是众多爱美女性日常都在做的事情。说到护肤品,赫莲娜和之谜可是,所有女孩子欲罢不能的贵妇护肤品,树上台上能拥有这两个贵妇护肤品,父亲,若不缺位老舍说,没了母亲的人就像失了根的花草,古云,慈母多败儿,一母毁三代。听起来,成也母亲败也母亲,但其实最好的成长公式是0。5父亲0。5母亲1完整的孩子。若父亲功能不得彰显,我们将看到千万年薪,被富婆包养,属于罗斯的神仙爱情NBA联盟作为全球最高的篮球殿堂,自然而然NBA联盟的球员工资都是很高的,远超常人。几乎个个都是百万千万富翁,就算和一支球队只签下一份十天的短期合同,依旧可以拿到一份不错的薪资报酬Ruler给自己颁虚空冠军?将他的脸按在deft头上我也要夺冠引子DRX夺冠之后,deft受到了颇多关注。因为他打了十年,克服了腰伤服役等种种问题,现在终于拿到自己梦寐以求的冠军,值得庆贺。许多选手老朋友给deft送上了祝福,T1选手则有些失美国制造回流失败,我国拿下38亿大单,中美芯片单价差多少美国制造回流失败,我国拿下38亿大单!近日,三安光电宣布第三代半导体材料SiC芯片出货,拿下38亿大单。消息一出,引起了广泛热议。三安光电是谁?凭啥它拿大单?在整个半导体赛道内,三对美国股市来说最糟糕的结果是民主党在中期选举中大获全胜荷兰合作银行和美国银行的市场策略师说,周二中期选举对美国股市最坏的情况是民主党大获全胜。尽管华尔街分析师普遍认为,民主党在周二投票后加强对参众两院控制的可能性不大,但至少有两家投资英超最大黑马不是阿森纳!一波6胜3平进前3,他们连曼城都不怕谁会想到在世界杯开打之前的英超前半阶段,纽卡斯尔联会提前一轮锁定前四。尤其是最近一波6胜3平保持不败,让他们已经来到积分榜的第3位。逼平曼城和曼联,客场赢下热刺,唯一一场输球,还是特朗普危险了?美国共和党大金主发话是时候换人了来源环球时报新媒体据美国国会山报6日报道,尽管美国前总统特朗普似乎在为参加2024年总统选举做准备,但美国对冲基金富豪竞选资金超级捐款人肯格里芬(KenGriffin)表示,共和党半个多世纪前美国就实现了载人登月,宇航员是如何返回地球的?早在1961年,美国就实现了载人登月,距今已经过去了半个多世纪。很多人可能会有这样的疑问,月球上并没有火箭发射基地,月球上的宇航员是如何从月球返回地球的呢?其实答案也很简单,也只有力不从心据报道,今年以来,美联储不仅前所未见地多次加息75个基点,还开始将每月缩表规模提高至950亿美元。这给股票和债券市场带来了巨大的下行压力。美国有线电视新闻网发表文章称,货币政策一般