mybatis分模块获取xml_MyBatis高级知识前瞻

文章内容输出来源:拉勾教育Java就业训练营;

0.写在前面

到现在为止,在这个训练营里面也要有四个月了。这几个月相比之前,自己变得特别的忙碌,当前自己学到了第六阶段模块二——Spring框架。

现在几乎每天的时间,除去自己上课,做实验,剩下的几乎所有的时间都花在了看视频,看代码,思考代码,敲代码上面。在训练营的这段时间,自己的收获也特别多,在技术水平上也有了很大的提高。

前段时间第五阶段,完成了一整个课程管理模块前后端的开发,对自己的学习的自信心有了极大的提升——我也能完成一个完整的作品 :),同样也对自己这前面几个阶段的基础知识也有了一次全面性的巩固。

1.拉勾课程

拉勾教育的JAVA就业急训营是面向零基础的。

互联网从业者提供工作机会的招聘网站。拉勾教育是拉勾专门为互联网人打造的"实战大学"。拉勾网在多年的招聘经验中积累了大量的企业对人才的需求和人才的自身能力数据信息。但是符合企业要求的高端人才比较稀缺,而拉勾又掌握了企业的需求。所以拉勾本着为企业培养候选人的愿景开启教育培训业务,主要目的是通过系统培训为企业输送符合的高质量人才。

这个训练营适合那些对与编程有一些基础,想深入学习的人群,也适合那些对自己的专业就业前景不理想,没有项目经验的大学生。现在到了大学四年级,到了今年上半年才认真思考这件事情,土木专业出来之后的一个项目就要3~5年,我也了解自己的性格,我其实不喜欢这么长周期项目。

相比之下,我更喜欢"小步快跑,快速迭代"的互联网行业。同样,Java是一门工业级语言,它的规范都经过ISO标准化,而且都有工业界厂商组成的标准化委员会来制定工业标准。JAVA的安全性,跨平台,稳定性也是这门语言的优秀之处。

整个课程分为12个阶段,从开始的Java SE基础知识,到后来的开发一个系统模块,再到SSM框架的整合开发,分布式互联网系统的搭建,最后能够设计开发一套微服务架构的互联网系统。

整个课程学完之后,既可以把JAVA这门语言学的深入,同样自己能够不断的刻意练习,锻炼自己的学习能力。

课程的学习模式是非常棒的。课程属于在线学习,直播+录播的方式来进行,总共12个阶段,每个阶段下有几个模块,每个模块下面又有三到五个任务,每一个任务都是对一个新的知识点,新的概念从认识到编程实现,再到深入 ,每个任务完成都会有几道测验题目,可以用来检查自己这个小任务的学习情况。

每个模块学习完之后,会有一道编程题,每到编程题目都是在一个很简单的题目上面,不断的增加新的功能,使用新的方式来实现,整体的结构是从简单到复杂,从表面到深入的实现方式。

做完这道题目之后,自己要把自己所完成的代码,自己这个模块做的笔记,并且自己要录制一个这道题目的讲解视频,录制视频同样也锻炼自己的表达沟通能力, 要把自己对于这道题目的思路,代码清晰的表达出来。

2.拉勾老师

现在接触的老师主要有班主任——Karry老师,导师—卡卡,教学老师——奇点,九渊,子幕老师。每个老师都很负责。

班主任每周都会咨询自己最近学习的情况,聊聊自己最近学习的状态,自己的学习效果,同样还会在群里面给大家鼓励加油。

卡卡导师真的非常有耐心,有次周六下午,自己写的代码,自己检查了几遍都没发现错误,代码运行起来却总是报错,出现一大片屏幕的红色报错提示,自己也不能理解这些报错信息。就把整个项目发给了卡卡,不一会后,卡卡导师就发现了我的问题——jar包添加的过多,存在了各个依赖之间的冲突。

导师也非常有耐心,哪里出错会给给自己认真讲解一个问题。要知道,自己刚学一个新的知识点的时候,总是出现各种各样的问题的时候,自己的心态是要崩的。

每周都会有当前学习进度的老师来给我们进行直播,直播通常会先回顾这个阶段的知识要点,之后讲解面试题,讲解这个模块的重点知识,讲解这个模块的课后题目,讲解这个阶段学生提交上来的问题,最后还有一段时间用来和老师一起互动,互动可以把自己想要了解的知识发出来,老师会实时互动沟通。

每周二,周四的晚上八点都会有导师发在群里几道面试题目来进行讨论,讨论的问题既有这个阶段的重难点题目,也有之前阶段遇到过的经典问题。

同学们这个时候也会回答的非常热烈,各自持有不同的意见,之后卡卡导师会分析几个答案,哪个正确,错误的错在哪里。班群的讨论氛围也是热烈的。如果有问题可以在班群提出,有空的同学会给予答复,当然大家都解决不了的时候导师会给你解答。

MyBatis 高级应用

1ea0c3b4db59cad4b99c85cf2853cc28.png

MyBatis 架构原理

MyBatis的架构设计

22e0038815ebf2a590da9cacf52e4260.png
架构原理

我们把Mybatis的功能架构分为三层:

(1) API接口层:提供给外部使用的接口 API,开发人员通过这些本地API来操纵数据库。接口层一接收到

调用请求就会调用数据处理层来完成具体的数据处理。

MyBatis和数据库的交互有两种方式:

a. 使用传统的MyBati s提供的API ;

b. 使用Mapper代理的方式

(2) 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根

据调用的请求完成一次数据库操作

(3) 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是

共 用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑

MyBatis的层次结构

7875d6c179042f13cfcb1bd01ec5aba3.png

总体流程

(1) 加载配置并初始化

触发条件:加载配置文件

配置来源于两个地方,一个是配置文件(主配置文件conf.xml,mapper文件*.xml),—个是java代码中的 注

解,将主配置文件内容解析封装到Configuration,将sql的配置信息加载成为一个mappedstatement 对

象,存储在内存之中

(2) 接收调用请求

触发条件:调用Mybatis提供的API

传入参数:为SQL的ID和传入参数对象

处理过程:将请求传递给下层的请求处理层进行处理。

(3) 处理操作请求

触发条件:API接口层传递请求过来

传入参数:为SQL的ID和传入参数对象

处理过程:

(A) 根据SQL的ID查找对应的MappedStatement对象。

(B) 根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。

(C) 获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。

(D) 根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理

结果。

(E) 释放连接资源。

(4) 返回处理结果

将最终的处理结果返回。

MyBatis的源码剖析

Inputstream inputstream = Resources.getResourceAsStream("mybatis-
config.xml");
//这一行代码正是初始化工作的开始。
SqlSessionFactory factory = new
SqlSessionFactoryBuilder().build(inputStream);

然后,进入源码剖析

// 1.我们最初调用的build
public SqlSessionFactory build (InputStream inputStream){
    
//调用了重载方法
return build(inputStream, null, null);
}
// 2.调用的重载方法
public SqlSessionFactory build (InputStream inputStream, String
environment,
Properties properties){
    
try {
    
// XMLConfigBuilder是专门解析mybatis的配置文件的类
XMLConfigBuilder parser = new XMLConfigBuilder(inputstream,
environment, properties);
//这里又调用了一个重载方法。parser.parse()的返回值是Configuration对象
return build(parser.parse());
} catch (Exception e) {
    
throw ExceptionFactory.wrapException("Error building
SqlSession.", e)

MyBatis在初始化的时候,会将MyBatis的配置信息全部加载到内存中,使用

org.apache.ibatis.session.Configuratio n 实例来维护

下面进入对配置文件解析部分:

首先对Configuration对象进行介绍:

Configuration对象的结构和xml配置文件的对象几乎相同。
回顾一下xml中的配置标签有哪些:
properties (属性),settings (设置),typeAliases (类型别名),typeHandlers (类型处理
器),objectFactory (对象工厂),mappers (映射器)等 Configurati
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值