MyBatis-Plus 与扩展与 MyBatis 与 Spring 集成

共 32 题
#

1. MyBatis 与 Spring AOP 的协作(事务边界)

A 每个 Mapper 调用都独立开启新事务
B SqlSessionTemplate 不感知 Spring 事务
C @Transactional 由 Spring AOP 代理处理,事务内共用一个 SqlSession ✓ 正确答案
D 事务边界与 SqlSession 无关
#

2. MyBatis 与 Spring Boot Actuator 的指标集成

A 可通过 Actuator/Micrometer 暴露连接池与数据访问指标 ✓ 正确答案
B MyBatis 与 Actuator 完全无关
C Actuator 只提供健康检查
D Actuator 无法监控连接池
#

3. MyBatis 与 Spring 事务的集成(SpringManagedTransaction)

A 它不能管理连接释放
B 它使用 MyBatis 自带的独立事务
C 它与 Spring 事务完全无关
D 它从 Spring 事务管理器获取连接并交由 Spring 统一管理事务 ✓ 正确答案
#

4. MyBatis 拦截器链与 Spring Bean 的协作

A MyBatis 拦截器可作为 Spring Bean 注入并访问其他依赖 ✓ 正确答案
B 拦截器不能注入 Spring 依赖
C 拦截器实例是每调用新建的
D 拦截器与责任链顺序无关
#

5. MyBatis 的 SqlSessionFactoryBean 配置

A 它只负责创建 SqlSession
B 它无法配置插件
C 它由 Spring Boot 完全自动,无需关注
D 它用于构建 SqlSessionFactory,可配置数据源、XML、插件等 ✓ 正确答案
#

6. MyBatis-Plus 与 Spring Boot 4.x 的兼容性

A 所有版本都自动兼容
B 需选择与 Spring Boot 4.x 匹配的 MyBatis-Plus 版本,注意依赖兼容 ✓ 正确答案
C Spring Boot 4.x 无任何依赖变化
D MyBatis-Plus 不依赖 mybatis-spring
#

7. MyBatis-Plus 的 BaseMapper/IService 抽象

A 二者必须手写 XML
B BaseMapper 只能手写 SQL
C IService 是数据访问层接口
D BaseMapper 提供通用 CRUD,IService 提供服务层抽象 ✓ 正确答案
#

8. MyBatis-Plus 的乐观锁插件(OptimisticLockerInnerInterceptor)

A 它用于物理分页
B 它自动在更新时校验版本号并自增,实现乐观锁 ✓ 正确答案
C 它不需要 @Version 注解
D 它通过加锁实现并发控制
#

9. SqlSessionTemplate 与线程安全的 SqlSession

A 它每次调用都新建连接且不释放
B 它与原生 SqlSession 线程安全行为相同
C 它不参与事务管理
D 它是线程安全的 SqlSession 代理,事务内复用同一 SqlSession ✓ 正确答案
#

10. LambdaQueryWrapper 的类型安全优势

A 使用字符串列名,无编译期检查
B 只能用于查询,不能用于更新
C 与 QueryWrapper 完全相同
D 用方法引用引用属性,编译期校验,类型安全 ✓ 正确答案
#

11. MapperScannerConfigurer 的包扫描机制

A 它无法过滤接口
B 它只扫描实体类
C @MapperScan 与它无关
D 它扫描 Mapper 接口并注册为 Spring Bean ✓ 正确答案
#

12. MyBatis 与 Druid 连接池的协作

A MyBatis 通过 Druid 数据源获取连接,Druid 提供连接管理与 SQL 监控 ✓ 正确答案
B Druid 与 MyBatis 完全无关
C Druid 只能用于 Hibernate
D Druid 无法监控 SQL
#

13. MyBatis 与 JdbcTemplate 的边界

A JdbcTemplate 支持动态 SQL 与 ResultMap
B JdbcTemplate 是轻量 JDBC 封装,MyBatis 是完整 ORM 框架 ✓ 正确答案
C 两者功能完全相同
D MyBatis 无法做结果映射
#

14. MyBatis 与 Spring 6 @TransactionalEventListener 的协作

A 它在事务中同步执行
B 它在事务提交后执行回调,适合提交后发消息/清缓存 ✓ 正确答案
C 它无法与 MyBatis 配合
D 它用于开启事务
#

15. MyBatis 与 Spring Cloud 的配置中心协作

A 可通过配置中心管理数据源配置,@RefreshScope 实现刷新 ✓ 正确答案
B 配置中心无法管理 MyBatis 配置
C SqlSessionFactory 刷新无成本
D 配置刷新不影响连接池
#

16. MyBatis 与 Spring Modulith 模块边界

A Mapper 应按业务模块划分,模块间通过服务接口协作 ✓ 正确答案
B 模块间可任意访问其他模块 Mapper
C Modulith 不关注模块边界
D 事务边界与模块边界无关
#

17. MyBatis 多数据源(AbstractRoutingDataSource)

A 通过 determineCurrentLookupKey 路由到不同数据源,切换需在事务前 ✓ 正确答案
B 事务内可随时切换数据源
C 它只能使用一个数据源
D 它无法用于读写分离
#

18. MyBatis 的 @MapperScan 与 @Mapper 的差异

A 两者作用完全相同,无区别
B @MapperScan 只能标注在接口上
C @Mapper 用于批量扫描
D @MapperScan 批量扫描包下 Mapper 接口,@Mapper 标注单个接口 ✓ 正确答案
#

19. MyBatis 的 @Transactional 与 Propagation

A REQUIRES_NEW 挂起当前事务并新建独立事务 ✓ 正确答案
B REQUIRED 总是新建事务
C Propagation 不影响连接占用
D MyBatis 不参与 Spring 事务
#

20. MyBatis 的 PageHelper 集成与边界

A 分页参数跨线程自动传递
B 分页设置对后续所有查询生效
C 它默认内存分页
D 它通过插件拦截 SQL 生成分页,用 ThreadLocal 保存分页参数 ✓ 正确答案
#

21. MyBatis 的多租户与 Spring Security 的协作

A 租户标识与安全上下文无关
B 拦截器无法注入租户条件
C 从 SecurityContext 获取租户标识,拦截器在 SQL 自动追加租户条件 ✓ 正确答案
D 多租户无需 SQL 过滤
#

22. MyBatis-Plus 与 MyBatis Dynamic DataSource(多数据源)

A 多数据源无需事务协调
B 切换可在事务链中任意时刻进行
C 通过 @DS 注解在方法上切换数据源,实现读写分离 ✓ 正确答案
D 动态数据源只能单库
#

23. MyBatis-Plus 的 SQL 性能分析插件(PerformanceInterceptor)在生产环境的关闭建议

A 生产环境必须开启才能监控
B 它是开发期 SQL 性能分析工具,生产环境建议关闭避免开销 ✓ 正确答案
C 它不影响任何性能
D 它用于物理分页
#

24. MyBatis-Plus 的 SqlInjector 自定义 SQL

A 它只能注入现有方法
B 它无法自定义
C 它用于分页
D 它负责向 Mapper 注入通用 SQL 方法,可自定义扩展 ✓ 正确答案
#

25. MyBatis-Plus 的 TenantLineInnerInterceptor 边界

A 它对所有 SQL 完整生效,无边界
B 它只能用于查询
C 它无需配置租户列
D 它自动在 SQL 追加租户条件,可配置忽略表 ✓ 正确答案
#

26. MyBatis-Plus 的分页插件(PaginationInnerInterceptor)原理

A 它默认内存分页
B 它不需要 IPage 参数
C 它不支持方言
D 它拦截 query 按方言生成物理分页 SQL 并执行 count ✓ 正确答案
#

27. MyBatis-Plus 的多租户插件

A 它在 SQL 自动追加租户条件实现数据隔离 ✓ 正确答案
B 它只能用于单租户
C 它无法配置忽略表
D 它用于分页
#

28. MyBatis-Plus 的数据权限插件(DataPermissionInterceptor)

A 它用于列加密
B 它根据用户权限自动追加 SQL 过滤条件,实现行级数据权限 ✓ 正确答案
C 它只能用于租户
D 它无法配置过滤规则
#

29. MyBatis-Plus 的核心特性(CRUD Wrapper、分页插件、逻辑删除)

A 逻辑删除通过 @TableLogic 自动将删除改写为标记更新 ✓ 正确答案
B Wrapper 无法构造条件
C 分页插件默认内存分页
D 乐观锁无需 @Version
#

30. MyBatis-Plus 的防全表更新与删除插件

A 它只拦截查询
B 它无法阻止全表删除
C 它拦截无 WHERE 条件的更新/删除,防止全表误操作 ✓ 正确答案
D 它用于分页
#

31. MyBatis-Plus 的字段自动填充(MetaObjectHandler)

A 它无法填充时间字段
B 它用于分页
C 它只用于查询结果
D 它在插入/更新时自动填充标注 @TableField(fill) 的字段 ✓ 正确答案
#

32. MyBatis-Plus 的逻辑删除与全局配置

A 逻辑删除是物理删除
B 逻辑删除与全局配置无关
C 逻辑删除后查询仍返回已删记录
D 逻辑删除通过 @TableLogic 或全局配置自动将删除改写为标记更新 ✓ 正确答案