关系经济人类预测化学自然
投稿投诉
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

Mybatis核心类SqlSessionFactory,看完

6月10日 浅时光投稿
  本篇文章我们首先解析SqlSessionFactory的创建过程。1、实例代码
  在实例代码中,我们在测试类中写了一个init()方法,里面包括了SqlSessionFactory的构建,分为两步。
  第一步:读取配置文件mybatisconfig。xml输入流
  第二步:根据输入流构建SqlSessionFpublicvoidinit(){定义mybatis全局配置文件Stringresourcemybatisconfig。加载mybatis全局配置文件InputStreaminputStry{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。this。parseConfiguration(this。parser。evalNode(configuration));returnthis。}}
  从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。}3、总结
  自此,SqlSessionFactory的创建过程就讲完了,总的来说就是一个封装了配置文件的工厂类。那么得到了SqlSessionFactory这个工厂对象,接下来干嘛?生产SqlSession,然后通过SqlSession进行数据库的增删改查操作
  没错,接下来,指北君将给大家介绍SqlSession的交互过程,这也是Mybatis里面最重要的一个对象。
投诉 评论 转载

关于秋冬必备健康小常识冬季是人抵抗能力最差的时候,更加是感冒高峰的时候了!一定要注意以下几点!首先就是保护肠胃肠道的毛病。因为冬季的时候,很多人喜欢吃火锅和烧烤,但是主要吃这两样,就一定会喝饮……Mybatis核心类SqlSessionFactory,看完本篇文章我们首先解析SqlSessionFactory的创建过程。1、实例代码在实例代码中,我们在测试类中写了一个init()方法,里面包括了SqlSessionFact……专治不开心的药方,请查收让自己快乐起来的20件小事嗨,你好,我是硕姑娘。一个专注个人成长、践行积极意义并取悦自己的CFP持证人员。点击上方【关注】,一起阅己、悦己、越己,活出心花怒放的人生。1。思考自己为什么……苏炳添领衔中国队53将出击尤金田径世锦赛有望续写佳绩北京时间本周六上午,尤金田径锦标赛将正式拉开帷幕。中国田径代表队53名运动员将参加100米、20公里竞走、铅球等22个小项的比赛项目,其中包括巩立姣、刘诗颖等在东京奥运会获得冠……为什么人懂得越多烦恼也越多人世间,什么最快乐?红尘里,什么最烦恼?有的人说:结婚最快乐。没钱最烦恼。而有的人会说:挣钱最快乐,婚姻最烦恼。有的人一生能无忧无虑,开心快乐的生活着,而有的人一生命运多桀,劳……每天都有陨石撞击地球?陨石坑里为何没有陨石,它们是谁拿走的?说起陨石撞地球,很多人第一个想到的可能就是六千五百年前,那一场毁灭侏罗纪时代的巨型陨石。事实上地球被陨石撞击的次数远比我们想象得多,但是如果你仔细观察,就会发现,巨大的陨石坑中……黑玫瑰李宇春开启第四次大满贯?继ELLE2023开年刊的封面之后,时尚五大女刊的另一家《嘉人》今天宣布,顶级偶像李宇春将登上其二月刊的封面,黑玫瑰面纱的大片既复古又摩登。时隔三年,李宇春的第四次年内大……梅开二度?西媒西班牙人板块再度报道武磊中国无缘世界杯虽然武磊本赛季状态糟糕,在西班牙人的前途一片灰暗加泰罗尼亚媒体《体育世界》还是基于了中国前锋足够的重视程度,继输给日本之后,今天该媒体官网的西班牙人板块再度报道了武磊的新闻,连……一加平板电脑或已进入量产阶段12。4英寸大小,搭载骁龙865最近vivo的首款平板电脑已经完成了入网申请,安卓平板的阵营将得到进一步扩充,同时有外媒透露,一加也将在海外市场推出自己的平板电脑一加Pad,并且已进入量产阶段,很可能会在今年……处世之强硬而不横,强而不满,刚而不脆一个民族要想强大,必先强大武装,才能发展其它。一个人想立于不败,同样得让自己俱备攻可打,退可守的能力。软弱与没有棱角的和善,只能使自己变成一只待烹的羔羊,唯有强硬才……河南旅游清凉避暑,宝泉泼水狂欢节教你如何对抗酷夏现在河南的温度让越来越多的人选择待在25的空调屋里西瓜、冷饮wifi伺候着但总感觉少了很多夏天的乐趣其实想要一个25的夏天很简单宝泉泼水狂欢节为你……入园买被子注意事项,请查收幼儿园的被子,放在家里的朋友们,要早一点为孩子清洗好,说不定临近上学,结果下起一场大大的雨。这样会让被子起霉或产生异味。新入园的小宝宝家长们,建议您在第一天报名的时候,把……
婴儿也需要喝水夏季减肥方法夏季减肥方法有哪些做人要讲道德自作聪明的公鸡年前的地下城是什么样子的女性在月经期间怎样运动更健康别去打扰心里没你的人爆笑有才的店名有才的老板和士兵优质蛋白质抵抗病毒最关键的食物永安燕江国际大酒店成为上海职工疗休养基地张嘉倪到底长得多精致?穿上抹胸纱裙,二次元里的人偶都比不过她深处那一缕馨香局长真二
跟大品牌学营销为何越学越糟糕【歌词】冬天里的白玫瑰DJ版歌手:地铁兄弟热博聚热点网 最贵键鼠来了!iMacPro标配键鼠被单买1万6训泉翁喜晴超级冷门!亚洲首胜!沙特21逆转阿根廷,梅西点球破门白色羽绒服怎么保存不发黄?白色羽绒服怎么打理?地面施工地下损害责任纠纷怎么解决?在公司工作十五年辞职补偿金多少老年心血管疾病患者,怎么备战寒冷冬季?皮肤黑,穿什么颜色的衣服比较好看?美国要撤了,收拾阿富汗残局的会是印度还是中国?防辐射眼镜如何辨别

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州