首页 > 编程知识 正文

java线程池面试题,java和python哪个好

时间:2023-05-04 19:59:06 阅读:41983 作者:3996

本文MyBatis的总体结构分为基础支持层核心处理层接口层三层,如下图所示。

基础支撑层反射模块

该模块可以很好地封装Java本机反射,提供更简洁、更易于使用的API,便于高层调用,对反射操作进行类元数据缓存等一系列优化,提高反射操作的性能

类型转换模块

类型转换模块提供两个主要功能。 一种是别名机制,MyBatis提供别名机制以简化配置文件。 另一个功能是实现JDBC类型和Java类型之间的转换。 此功能与将实体参数绑定到SQL语句并映射查询结果集时有关。

日志模块

可以提供详细的日志输出信息,并集成多个日志框架。 该日志模块的主要功能之一是集成第三方日志框架。

资源加载模块

资源加载模块主要提供封装类加载器、确定类加载器的使用顺序以及加载类文件和其他资源文件的功能。

解析器模块

解析器模块主要提供两个功能。 一种封装XPath,并为在MyBatis初始化时解析mybatis-config.xml配置文件和映射配置文件提供支持。 另一个功能是支持处理动态SQL语句中的占位符。

数据源模块

MyBatis本身提供了适当的数据源实现,并提供了与第三方数据源集成的接口。

事务管理

MyBatis将数据库中的事务抽象出来,本身提供了适当的事务接口和简单的实现。 MyBatis通常与Spring框架集成,并由Spring框架管理事务。

缓存模块

MyBatis提供了l1和l2缓存,它们都依赖于基本支持层的缓存模块来实现。 MyBatis中提供的这两个缓存级别与MyBatis和整个APP应用程序在同一JVM上执行,并共享相同的堆内存。 如果这两级缓存中的数据量较大,则可能会影响系统中其他功能的行为,因此在需要缓存大量数据时,优先使用缓存产品,如Redis和Memcache。

Binding 模块

调用SqlSession的相应方法执行数据库操作时,必须指定在映射文件中定义的SQL节点。 如果发生拼写错误,则只有在运行时才能找到适当的异常。 为了尽早发现此错误,MyBatis通过绑定模块将用户定义的Mapper接口与映射配置文件相关联,系统调用自定义Mapper接口的方法执行相应的SQL语句进行解码

请注意,开发人员不需要编写自定义Mapper接口的实现,MyBatis会自动创建动态代理对象。

核心处理层在核心处理层实现了MyBatis的核心处理过程,包括与MyBatis初始化和完成一次数据库操作相关的所有过程。

配置解析

在MyBatis初始化过程中,会加载mybatis-config.xml配置文件、映射配置文件和映射器接口中的注释信息,解析后的配置信息形成相应的对象然后,使用此配置对象创建SqlSessionFactory对象。 初始化MyBatis后,开发人员可以通过初始化从SqlSessionFactory创建SqlSession对象并完成数据库操作。

SOL 解析与 scripting 模块

拼凑SQL语句是一个麻烦而容易出错的过程。 为了使开发人员摆脱这种无聊的工作,MyBatis提供了动态SQL语句的功能,并提供了与各种动态SQL语句(包括节点、节点和节点)相对应的节点。 通过组合这些节点,开发人员可以编写几乎满足所有需求的动态SQL语句。

MyBatis中的scripting模块根据用户传递的参数分析映射文件中定义的动态SQL节点,以形成可在数据库中执行的SQL语句。 然后,处理SQL语句的占位符并绑定用户传递的实际引用。

SQL执行

SQL语句的执行包含多个组件。 其中重要的是执行程序、语句处理程序、参数处理程序和结果处理程序。 执行程序主要维护l1和l2缓存,并提供与事务管理相关的操作。 它将与数据库相关的操作委托给语句处理程序。 语句处理程序首先通过p

arameterHandler 完成 SQL 语句的实参绑定;然后通过 java.sql.Statement 对象执行 SQL 语句并得到结果集;最后通过 ResultSetHandler 完成结果集的映射,得到结果对象并返回。

插件

用户可以通过添加自定义插件的方式对 MyBatis 进行扩展。用户自定义插件也可以改变 MyBatis 的默认行为,例如,我们可以拦截 SQL 语句并对其进行重写。由于用户自定义插件会影响 MyBatis 的核心行为,在使用自定义插件之前,开发人员需要了解 MyBatis 内部的原理,这样才能编写出安全、高效的插件。

下图展示了 MyBatis 执行一条 SQL 语句的大致过程。

接口层

接口层相对简单,其核心是 SqlSession 接口,该接口中定义了 MyBatis 暴露给应用程序调用的 API,也就是上层应用与 MyBatis 交互的桥梁。接口层在接收到调用请求时,会调用核心处理层的相应模块来完成具体的数据库操作。

可以通过 MyBatis 源码的目录结构查看各个模块的具体实现,目录结构如下图所示。

封装的很清晰,基本是一个模块一个 package。

面试准备+复习资料分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦,有需要的可以来找我获取哈

获取方式:点击蓝色字体即可免费获取

色字体即可免费获取](https://gitee.com/vip204888/java-p7)**

[外链图片转存中…(img-kWXDwrFB-1627096273205)]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。