全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

源码架构与核心原理专题测试

17 题 50 分钟 难度:

考察知识点

  • SqlSessionFactory 构建流程:Configuration 解析、Builder 模式应用
  • Executor 执行器体系:SimpleExecutor、ReuseExecutor、BatchExecutor 的区别与实现
  • StatementHandler 语句处理:RoutingStatementHandler 路由分发、预处理语句构建
  • ResultSetHandler 结果处理:自动映射、嵌套结果处理、TypeHandler 应用
  • SqlSession 生命周期:创建、使用、关闭的资源管理
  • 插件机制:Interceptor 链、四大对象的拦截点
  • 缓存架构:一级缓存、二级缓存的执行流程
1
单选题

在 MyBatis 源码中,SqlSessionFactoryBuilder.build() 方法最终创建的 SqlSessionFactory 默认实现类是哪一个?

A

org.apache.ibatis.session.defaults.DefaultSqlSessionFactory

B

org.apache.ibatis.session.defaults.SimpleSqlSessionFactory

C

org.apache.ibatis.session.Configuration

D

org.apache.ibatis.executor.Executor

2
多选题

在 MyBatis 的 SqlSessionFactory 构建流程中,XMLConfigBuilder.parseConfiguration() 方法会依次解析以下哪些配置节点?(多选)

A

properties

B

settings

C

typeAliases

D

mappers

3
填空题

XMLConfigBuilder 构建 Configuration 对象时,使用 ___________ 解析 XML 配置文件,通过 __________________ 方法按顺序读取所有配置节点,最终调用 build() 方法返回 Configuration 对象。

4
单选题

关于 SqlSession 的生命周期,以下说法正确的是?

A

SqlSession 是线程安全的,可以在多个线程间共享使用

B

SqlSession 是非线程安全的,每个线程应该有自己的实例

C

SqlSession 应该作为类的静态字段长期持有

D

SqlSession 使用完毕后不需要关闭,GC 会自动回收资源

5
多选题

SqlSessionFactory.openSession() 方法在创建 SqlSession 时,会完成以下哪些操作?(多选)

A

从数据源获取新的数据库连接

B

根据配置创建对应的 Executor 实例

C

初始化 Transaction 事务对象

D

自动执行第一条 SQL 语句

6
判断题

调用 SqlSession.close() 方法时,会同时关闭底层的数据库连接和回滚未提交的事务。

A

B

7
单选题

在 MyBatis 的三种基本 Executor 中,哪种执行器会缓存 PreparedStatement 对象,适用于频繁执行相同 SQL 的场景?

A

SimpleExecutor

B

ReuseExecutor

C

BatchExecutor

D

CachingExecutor

8
多选题

BaseExecutor 作为 Executor 的抽象基类,实现了以下哪些核心方法?(多选)

A

query() - 查询方法,含一级缓存逻辑

B

update() - 更新方法,清空一级缓存

C

createStatement() - 创建 Statement 对象

D

commit()/rollback() - 事务控制方法

9
简答题

请简述 CachingExecutor 的工作机制,以及它如何实现二级缓存功能。

10
单选题

在 MyBatis 中,当 SQL 语句包含 ${} 占位符时,会使用哪种 StatementHandler 实现?

A

SimpleStatementHandler

B

PreparedStatementHandler

C

CallableStatementHandler

D

RoutingStatementHandler

11
多选题

关于 RoutingStatementHandler,以下说法正确的有哪些?(多选)

A

它是 StatementHandler 接口的默认路由实现

B

它根据 MappedStatement.getStatementType() 决定使用哪个具体 Handler

C

它本身实现了 SQL 执行逻辑

D

它在构造时就会创建被委托的具体 Handler 实例

12
单选题

MyBatis 中 ParameterHandler 接口的默认实现类是哪一个?

A

DefaultParameterHandler

B

SimpleParameterHandler

C

RoutingParameterHandler

D

PreparedStatementParameterHandler

13
填空题

DefaultParameterHandler.setParameters() 方法中,通过 ___________________ 获取对应的 TypeHandler,然后调用 ___________________ 方法将 Java 对象设置到 PreparedStatement 的指定位置。

14
单选题

MyBatis 中负责将 ResultSet 结果集映射为 Java 对象列表的组件是?

A

DefaultResultSetHandler

B

SimpleResultSetHandler

C

ResultSetMapper

D

ResultMapHandler

15
多选题

DefaultResultSetHandler 处理结果集映射时,支持以下哪些映射方式?(多选)

A

简单属性映射(列名到属性名)

B

嵌套结果映射(association/collection with resultMap)

C

嵌套查询映射(association/collection with select)

D

动态代理映射

16
判断题

ResultMap 中未定义 result 映射时,MyBatis 会自动根据列名与属性名的对应关系进行自动映射。

A

B

17
简答题

请描述从 SqlSessionFactoryBuilder.build()SqlSession.selectOne() 执行的完整流程中,涉及的核心组件及其作用。

← 上一个试卷 注解开发专题测试
下一个试卷 → 生产环境最佳实践专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库