不看绝对⾎亏!java⾯试项⽬中的技术难点
正⽂
MyBatis 的整体架构分为三层, 分别是基础⽀持层、核⼼处理层和接⼝层,如下图所⽰。
基础⽀持层
反射模块
该模块对 Java 原⽣的反射进⾏了良好的封装,提供了更加简洁易⽤的 API ,⽅便上层使调⽤,并且对反射操作进⾏了⼀系列优化,例如缓存了类的元数据,提⾼了反射操作的性能。
类型转换模块
类型转换模块提供了两个主要功能,⼀个功能是别名机制,MyBatis 为了简化配置⽂件提供了别名机制;另⼀个功能是实现 JDBC 类型与Java 类型之间的转换,该功能在为 SQL 语句绑定实参以及映射查询结果集时都会涉及。
⽇志模块
提供详细的⽇志输出信息,并且能够集成多种⽇志框架,其⽇志模块的⼀个主要功能就是集成第三⽅⽇志框架。
如何理解递归算法资源加载模块
资源加载模块主要是对类加载器进⾏封装,确定类加载器的使⽤顺序,并提供了加载类⽂件以及其他资源⽂件的功能。
smali代码解析器模块拍视频xml文件是干什么的
解析器模块主要提供两个功能,⼀个功能是对 XPath 进⾏封装,为 MyBatis 初始化时解析 l 配置⽂件以及映射配置⽂件提供⽀持;另⼀个功能是为处理动态 SQL 语句中的占位符提供⽀持。
数据源模块
MyBatis ⾃⾝提供了相应的数据源实现,也提供了与第三⽅数据源集成的接⼝。
事务管理
MyBatis 对数据库中的事务进⾏了抽象,其⾃⾝提供了相应的事务接⼝和简单实现。⼀般在应⽤中,MyBatis 会与 Spring 框架集成,并由Spring 框架管理事务。
缓存模块
MyBatis 中提供了⼀级缓存和⼆级缓存,⽽这两级缓存都是依赖于基础⽀持层中的缓存模块实现的。MyBatis 中⾃带的这两级缓存与MyBatis 以及整个应⽤是运⾏在同⼀个 JVM 中的,共享同⼀块堆内存。如果这两级缓存中的数据量较⼤, 则可能影响系统中其他功能的运⾏,所以当需要缓存⼤量数据时,优先考虑使⽤ Redis 、Memcache 等缓存产品。
Binding 模块
在调⽤ SqlSession 相应⽅法执⾏数据库操作时,需要指定映射⽂件中定义的 SQL 节点,如果出现拼写错误,我们只能在运⾏时才能发现相应的异常。为了尽早发现这种错误,MyBatis 通过 Binding 模块将⽤户⾃定义的 Mapper 接⼝与映射配置⽂件关联起来,系统可以通过调⽤⾃定义 Mapper 接⼝中的⽅法执⾏相应的SQL 语句完成数据库操作,从⽽避免上述问题。
需要注意的是,开发⼈员⽆须编写⾃定义 Mapper 接⼝的实现,MyBatis 会⾃动为其创建动态代理对象。
核⼼处理层
在核⼼处理层中实现了 MyBatis 的核⼼处理流程,其中包括 MyBatis 的初始化以及完成⼀次数据库操作涉及的全部流程。
建站导航配置解析
在 MyBatis 初始化过程中,会加载 l 配置⽂件、映射配置⽂件以及 Mapper 接⼝中的注解信息,解析后的配置信息会形成相应的对象并保存到 Configuration 对象中。之后,利⽤该 Configuration 对象创建 SqlSessionFactory 对象。待 MyBatis 初始化之后,开发⼈员可以通过初始化得到 SqlSessionFactory 创建 SqlSession 对象并完成数据库操作。
SOL 解析与 scripting 模块
拼凑 SQL 语句是⼀件烦琐且易出错的过程,为了将开发⼈员从这项枯燥⽆趣的⼯作中解脱出来,MyBatis 实现动态 SQL 语句的功能,提供了多种动态 SQL 语句对应的节点,例如, 节点、 节点、 节点等。通过这些节点的组合使⽤,开发⼈员可以写出⼏乎满⾜所有需求的动态 SQL 语句。
MyBatis 中的 scripting 模块会根据⽤户传⼊的实参,解析映射⽂件中定义的动态 SQL 节点,并形成数据库可执⾏的 SQL 语句。之后会处理 SQL 语句中的占位符,绑定⽤户传⼊的实参。
php权限管理SQL 执⾏
SQL 语句的执⾏涉及多个组件,其中⽐较重要的是 Executor 、StatementHandler 、ParameterHandler 和 ResultSetHandler。Executor 主要负责维护⼀级缓存和⼆级缓存,并提供事务管理的相关操作,它会将数据库相关操作委托给 StatementHandler 完成。StatementHandler ⾸先通过 ParameterHandler 完成 SQL 语句的实参绑定;然后通过 java.sql.Statement 对象执⾏ SQL 语句并得到结果集;最后通过 ResultSetHandler 完成结果集的映射,得到结果对象并返回。
插件
⽤户可以通过添加⾃定义插件的⽅式对 MyBatis 进⾏扩展。⽤户⾃定义插件也可以改变 MyBatis 的默
认⾏为,例如,我们可以拦截 SQL 语句并对其进⾏重写。由于⽤户⾃定义插件会影响 MyBatis 的核⼼⾏为,在使⽤⾃定义插件之前,开发⼈员需要了解 MyBatis 内部的原理,这样才能编写出安全、⾼效的插件。
下图展⽰了 MyBatis 执⾏⼀条 SQL 语句的⼤致过程。
接⼝层
mysql面试题34道经典接⼝层相对简单,其核⼼是 SqlSession 接⼝,该接⼝中定义了 MyBatis 暴露给应⽤程序调⽤的 API,也就是上层应⽤与 MyBatis 交互的桥梁。接⼝层在接收到调⽤请求时,会调⽤核⼼处理层的相应模块来完成具体的数据库操作。
可以通过 MyBatis 源码的⽬录结构查看各个模块的具体实现,⽬录结构如下图所⽰。
封装的很清晰,基本是⼀个模块⼀个 package。
最后
⼩编在这⾥分享些我⾃⼰平时的学习资料,由于篇幅限制,pdf⽂档的详解资料太全⾯,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个⼩节点⾥⾯都有更细化的内容!有需要的程序猿(媛)可以关注+点赞,
程序员代码⾯试指南 IT名企算法与数据结构题⽬最优解
这是” 本程序员⾯试宝典!书中对IT名企代码⾯试各类题⽬的最优解进⾏了总结,并提供了相关代码实现。针对当前程序员⾯试缺乏权威题⽬汇总这⼀-痛点, 本书选取将近200道真实出现过的经典代码⾯试题,帮助⼴“⼤程序员的⾯试准备做到万⽆⼀失。 “刷”完本书后,你就是“题王”!
《TCP-IP协议组(第4版)》
本书是介绍TCP/IP协议族的经典图书的最新版本。本书⾃第1版出版以来,就⼴受读者欢迎。
本书最新版进⾏」护元,以体境计算机⽹络技不的最新发展,全书古有七⼤部分共30草和7个附录:第⼀部分介绍⼀些基本概念和基础底层技术:第⼆部分介绍⽹络层协议:第三部分介绍运输层协议;第四部分介绍应⽤层协议:第五部分介绍下⼀代协议,即IPv6协议:第六部分介绍⽹络安全问题:第七部分给出了7个附录。
Java开发⼿册(嵩⼭版)
这个不⽤多说了,阿⾥的开发⼿册,每次更新我都会看,这是8⽉初最新更新的**(嵩⼭版)**
MySQL 8从⼊门到精通
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论