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

插件机制专题测试

10 题 45 分钟 难度:

考察知识点

  • 插件拦截原理:四大核心拦截对象(Executor、ParameterHandler、ResultSetHandler、StatementHandler)、JDK 动态代理实现、多插件执行顺序
  • 分页插件原理:PageHelper 核心机制、ThreadLocal 参数传递、SQL 重写(COUNT 查询 + LIMIT 分页)
  • 性能监控插件:PerformanceInterceptor 功能与局限、生产环境 SQL 监控方案选型
  • Interceptor 接口实现:自定义插件开发流程、intercept/plugin/setProperties 方法职责
1
单选题

MyBatis 插件机制中,@Intercepts 注解用于声明插件需要拦截的目标对象和方法。以下哪个对象不属于 MyBatis 插件可拦截的四大核心对象?

A

Executor(执行器)

B

ParameterHandler(参数处理器)

C

TransactionManager(事务管理器)

D

StatementHandler(语句处理器)

2
单选题

MyBatis 插件的底层拦截机制基于什么技术实现?

A

CGLIB 字节码增强

B

JDK 动态代理

C

ASM 字节码操作

D

反射直接调用

3
判断题

MyBatis 配置了多个插件时,它们的执行顺序是按照在 mybatis-config.xml 中配置的顺序依次执行的,先配置的插件会先被拦截执行(即先执行外层的 intercept 逻辑)。

A

B

4
单选题

MyBatis 分页插件(如 PageHelper)实现分页的核心原理是什么?

A

在 Mapper 接口方法中手动添加 LIMIT 子句

B

使用 ResultSet 分页,查询全部数据后在内存中截取

C

拦截 Executor 的 query 方法,通过反射修改 BoundSql 中的 SQL 语句,追加 LIMIT 子句

D

拦截 StatementHandler 的 prepare 方法,重新生成带 LIMIT 的 SQL

5
多选题

关于 PageHelper 分页插件的实现机制,以下说法正确的有哪些?

A

PageHelper 使用 ThreadLocal 存储分页参数(页码、每页条数),确保线程安全

B

PageHelper.startPage() 必须在 Mapper 方法调用之前执行,否则分页不生效

C

PageHelper 会自动对所有 SQL 语句进行分页,无需手动调用 startPage()

D

PageHelper 在执行分页查询前,会先执行一条 COUNT SQL 获取总记录数

6
填空题

PageHelper 在重写 SQL 实现分页时,会将原始 SQL 改写为两条:一条是 COUNT 查询,一条是 LIMIT 分页查询。原始 SQL 为 "SELECT u.id, u.name FROM user u WHERE u.age > 18 ORDER BY u.id",改写后的 COUNT SQL 为 "SELECT ________________________2_!!"。请填写空白处的内容。

7
单选题

MyBatis 自带的性能监控插件 PerformanceInterceptor(MyBatis 3.x 早期版本)的主要功能是什么?

A

自动为慢 SQL 添加索引建议

B

拦截 Executor 的 update 方法,统计 SQL 执行时间并输出日志

C

拦截 StatementHandler 的 query 和 update 方法,打印 SQL 及其执行时间

D

缓存 SQL 执行计划,提升重复查询性能

8
判断题

MyBatis 性能监控插件(PerformanceInterceptor)适合在生产环境中长期使用,因为它对性能的影响可以忽略不计。

A

B

9
多选题

在 MyBatis 项目中,以下哪些方式可以用于 SQL 性能监控?

A

自定义 Interceptor 拦截 StatementHandler,记录 SQL 执行时间并写入监控系统

B

使用 P6Spy 等第三方 SQL 日志框架,在代理层捕获 SQL 和执行时间

C

依赖 MyBatis 内置的 PerformanceInterceptor 作为生产环境主要监控手段

D

使用 Druid 连接池的 StatFilter,通过其 SQL 统计功能进行性能分析

10
简答题

请简述 MyBatis 中实现自定义 Interceptor 需要完成的步骤,并说明 Interceptor 接口中三个方法(intercept、plugin、setProperties)各自的作用。

← 上一个试卷 插件开发高级应用专题测试
下一个试卷 → 日志配置与调试专题测试

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

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

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

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