专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Mybatis核心类SqlSessionFactory,看完

  本篇文章我们首先解析SqlSessionFactory的创建过程。1、实例代码
  在实例代码中,我们在测试类中写了一个init()方法,里面包括了SqlSessionFactory的构建,分为两步。
  第一步:读取配置文件mybatisconfig。xml输入流
  第二步:根据输入流构建SqlSessionFactory;publicvoidinit(){定义mybatis全局配置文件Stringresourcemybatisconfig。xml;加载mybatis全局配置文件InputStreaminputStreamnull;try{inputStreamResources。getResourceAsStream(resource);}catch(IOExceptione){e。printStackTrace();}构建sqlSession的工厂sessionFactorynewSqlSessionFactoryBuilder()。build(inputStream);}
  没什么难的,去掉trycatch,也就两行代码。InputStreaminputStreamResources。getResourceAsStream(mybatisconfig。xml);SqlSessionFactorysessionFactorynewSqlSessionFactoryBuilder()。build(inputStream);
  是的,那只是你以为的两行代码,其实。。。。。。
  话不多说,指北君就来给大家揭秘这冰山下面的东西。2、代码剖析
  根据上面的时序图,我们分析根据源码分析每个步骤。
  、获取配置文件输入流InputStreaminputStreamResources。getResourceAsStream(mybatis。config。xml);
  这里没什么好说的,就是获取配置文件的输入流。
  、build(in)
  这里的in就是上一步获取的输入流inputStream。publicSqlSessionFactorybuild(InputStreaminputStream){returnbuild(inputStream,null,null);}
  在进入到build方法:publicSqlSessionFactorybuild(InputStreaminputStream,Stringenvironment,Propertiesproperties){try{XMLConfigBuilderparsernewXMLConfigBuilder(inputStream,environment,properties);returnbuild(parser。parse());}catch(Exceptione){throwExceptionFactory。wrapException(ErrorbuildingSqlSession。,e);}finally{ErrorContext。instance()。reset();try{inputStream。close();}catch(IOExceptione){Intentionallyignore。Preferpreviouserror。}}}
  、XMLConfigBuilder(in)
  这一段代码是为了解析我们的配置文件,配置文件是XML形式,我在之前的博客介绍过解析XML的几种方式。
  一种是基于树的结构来解析的称为DOM;另一种是基于事件流的形式称为SAX和(StAX)
  两者各有优缺点,我这里不做详细说明,想了解的可以看我之前的文章。
  而Mybatis使用的是DOM形式,并结合XPath来解析配置文件。
  、parse()publicConfigurationparse(){if(this。parsed){thrownewBuilderException(EachXMLConfigBuildercanonlybeusedonce。);}else{this。parsedtrue;this。parseConfiguration(this。parser。evalNode(configuration));returnthis。configuration;}}
  从configuration标签处开始解析。然后我们进入到this。parseConfiguration()方法中:privatevoidparseConfiguration(XNoderoot){try{this。propertiesElement(root。evalNode(properties));Propertiessettingsthis。settingsAsProperties(root。evalNode(settings));this。loadCustomVfs(settings);this。loadCustomLogImpl(settings);this。typeAliasesElement(root。evalNode(typeAliases));this。pluginElement(root。evalNode(plugins));this。objectFactoryElement(root。evalNode(objectFactory));this。objectWrapperFactoryElement(root。evalNode(objectWrapperFactory));this。reflectorFactoryElement(root。evalNode(reflectorFactory));this。settingsElement(settings);this。environmentsElement(root。evalNode(environments));this。databaseIdProviderElement(root。evalNode(databaseIdProvider));this。typeHandlerElement(root。evalNode(typeHandlers));this。mapperElement(root。evalNode(mappers));}catch(Exceptionvar3){thrownewBuilderException(ErrorparsingSQLMapperConfiguration。Cause:var3,var3);}}
  看到这是不是很熟悉了,这不就是mybatisconfig。xml配置文件里面的各个标签名嘛,是的,这就是解析该文件,然后全部放在configuration对象中。需要注意的是,这里的configuration对象不仅包括mybatisconfig。xml文件内容,也包括xxxMapper。xml文件内容。
  、build(configuration)publicSqlSessionFactorybuild(Configurationconfig){returnnewDefaultSqlSessionFactory(config);}
  就是去new了一个DefaultSqlSessionFactory对象,将configuration作为参数。
  、DefaultSqlSessionFactory(configuration)publicDefaultSqlSessionFactory(Configurationconfiguration){this。configurationconfiguration;}3、总结
  自此,SqlSessionFactory的创建过程就讲完了,总的来说就是一个封装了配置文件的工厂类。那么得到了SqlSessionFactory这个工厂对象,接下来干嘛?生产SqlSession,然后通过SqlSession进行数据库的增删改查操作
  没错,接下来,指北君将给大家介绍SqlSession的交互过程,这也是Mybatis里面最重要的一个对象。

万物都可卷的时代,留美的你怎么看?内卷这个词想必大家都不陌生了,它是20202021年的一大热词,持续力之长久,话题之广泛,引起了几乎所有行业一波又一波的讨论。什么是内卷指一类文化模式达到了某种最终的形态以后,既没不要再被骗了,得了这10种妇科病,根本不用治很多女性去做妇科检查看到检查单上写着盆腔积液HPV感染乳腺增生等就开始各种焦虑,尤其是一些不正规的医院还给你说的很严重,要给你治疗。其实有一些根本就不是病,是不需要进行治疗的。下面谍战剧信仰今晚开播,9位实力派坐镇,3大看点,有爆款潜质相信喜欢追剧的朋友,一定会在很长的时间之后,仍然记得昨晚发生了什么。电视剧人生若如初见,流程正常,官宣定档。上午,各位主演都在社交媒体上推广这部新剧,下午,电视剧官微还发布了几条倒DNF7月新职业爆料,女蓝拳可爱又飒爽,转职书一起配上DNF十四周年庆由于周年庆版本国服热度不及预期,舅舅党爆料国服预计首发蓝拳!说实话国服首发过副本超时空,当时是国服十周年庆典。这一次首发新职业,只能说国服目前的地位日益增高(韩服吸曝马玉琴夫妇早已离婚,李玉成婚期在即,马大姐全力支持狂点赞相信许多网友早已发现,马玉琴和李玉成最近这段时间都没有同框视频了,老两口就像是闹矛盾一样,马玉琴跟她的亲孙子直播,李玉成则是跟着一名年轻貌美的美女直播。因为马玉琴和李玉成分开的现状16年日本留学生替闺蜜挡刀遇害,母亲奔走五年控诉闺蜜,如今咋样2016年11月3日凌晨,在青岛即墨区家中熟睡的江秋莲接到了一个来自日本的电话,江秋莲没有多想,她觉得可能是在日本留学的女儿打来。电话接通后,听筒对面并不是江秋莲熟悉的声音,而是一为安倍哭泣驻日女记者发遗书我被网暴选择离开争论谁之过?7月19日下午14点,一名日本华人女子在朋友圈发出这样的信息很轻松,很平静地向大家宣布一个消息,32岁的我,决定要离开。从内容上看,疑似一封遗书。随后,一名支持她的网络大V在个人社朝鲜第二个承认卢甘斯克和顿涅茨克独立,其实是走出一步好棋朝鲜是什么样的一个国家,我想大家稍微也都了解。那么,朝鲜现在承认顿涅茨克和卢甘斯克独立,这其中代表着什么?又有哪些不为人知的交易呢?这其中必然有着让金正恩十分心动的好处,不然金正恩新灭鼠记作者王麒霁我房屋里的老鼠很猖獗,我常常被它们骚扰得不得安宁衣服被咬食物被吃,连香皂牙膏等这些玩意儿也不放过。这些东西只能像偷来一样藏在柜子里,要用时才取出来,不用时又要藏起天天如此神回复室友都睡了2天还不起床,我该不该叫她起床啊?神评亮了姑娘,当你扭头的那一刻你已经赢了谁还不是我小仙女啦明明可以跳过去的,你非要跟别人不一样,不一样为什么父辈离婚的就很少可以去医院看看嘿嘿,我可真是一个机灵鬼呀不是不愿意,而是没有说清烂尾断供谁的锅?银行跟房管局吵起来了!6倍大牛股突然崩了,券商一哥紧急提示风险中国基金报泰勒近期,全国多地出现烂尾楼盘业主联合发起强制断供的事件。包括郑州武汉南昌长沙太原西安等城市在内的52个停工或烂尾楼盘的业主发布停贷告知书。究竟是谁的锅?银行跟房管局吵起
有没有对中考或初中学习很有用的方法或窍门?之前回答了很多初中学习小窍门,今天和大家分享一下应试小窍门语文因为小时候喜欢看闲书,所以一直以来语文都是我不太担心的一门,尤其是作文,掌握了一定套路后作文驾轻就熟,甚至参加了许多次老百姓过了60岁最担心什么?不用问,老百姓到了60岁最担心没钱养老,养老老百姓过了60岁后,最担心的是老无所依,老无所靠。最担心的是干不动了,说的高文明些,无法为国家做贡献了。说的低自私些,没生活保障了。现在说说六七十年代你上学时状况?今天我来说说我们70年代初上学时的状况。农村的孩子到8岁的时候就到了入学年龄,那是农村没有幼儿园,入学就直接上一年级。那时候农村差不多,村村有小学。孩子们上学都不用大人接送。学校的去苏州和杭州两个城市旅游,哪个城市更值得一去?很奇怪这么多人选苏州,很奇怪好多人说杭州除了西湖什么都没有,很抱歉我并不喜欢苏州的园林,或者说我的欣赏水准不够(话说75亩大小20分钟可转一圈的拙政园门票可以标95大洋,如果安静的北京值得去的不为人知的景点(或展览馆美术馆公园)有哪些?如果时间充足,可以去参观一下电影博物馆汽车博物馆坦克博物馆,这三个地方都是我以前带孩子去过的,感觉很好。如果有比较小的孩子,可以去自然博物馆,以前我们去的时候人有点多。如果前门附近银行理财亏损会损失全部本金吗?有什么依据?说银行理财损失全部本金几率几乎为0的,都是一知半解的伪金融。事实上银行银行理财亏损,甚至亏损全部的案例并不少,最知名的案例中国银行的原油宝,不但本金全亏,还倒欠银行钱。过往之所以没有人说临床医学几乎不允许其他学生跨专业考研,那临床医学学生考研录取率是不是高一点?感谢邀请!首先,临床医学专业考研不允许其他专业考是因为此专业的特殊性和专业技能的要求强。临床医学专业具有高度的专业性,并不是说没有上过本科的,其他专业的学生就可以驾驭得了的。所以国过不了央美,清美,国美,美术生是应该走综合性大学还是专业美院?以一个一线美术高考教师的角度来谈的话1绝大多数孩子走美术高考,不是因为热爱美术。这种情况下,走美院还是走综合性大学,没啥区别的。2走美术高考的孩子中,绝大多数不是要当职业艺术家,将教育部将严格审批学院更名大学,大学比学院好吗?教育部将严格审批学院更名大学这个事宜,这是一个好事情。现在我们国家的大学都在想方设法提升自己,提升排名,扩大影响力。不少学院都希望变成大学。在我们国家目前的情况下,学院变成大学基本中国男人穿西装好像越来越少了,以后还会日常化吗?说起来,挺有趣的,中国80,90年代流行过西装热而且还发展出衣服宽大的中国风格,那时候,出门经常穿西装,甚至有时候干活,买东西时甚至也穿着西装那时候中国刚刚改革开放,国家还比较穷,如何修复痘坑?痘坑其实就是一种疤痕,有痘坑的那部分皮肤已经受损了,需要用具有修复效果的精华类产品修复,一定要坚持使用,才能看得见效果!推荐使用以下几款产品,可以修复痘坑城野医生EGF精华EGF能
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网