全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 14 道配套习题

与 Spring 集成专题

专题说明

本专题精选14道代表性题目,系统讲解MyBatis与Spring框架的集成方案,涵盖SqlSessionFactoryBean、SqlSessionTemplate、Mapper接口扫描、声明式事务管理、多数据源配置等核心内容,是企业级MyBatis开发的必备知识。

学习目标

  1. 掌握SqlSessionFactoryBean的配置方式与核心属性
  2. 理解SqlSessionTemplate的线程安全机制
  3. 掌握@MapperScan注解的使用方法与属性配置
  4. 熟悉Spring声明式事务在MyBatis中的应用
  5. 了解多数据源配置与动态数据源路由方案

学习内容

本专题涵盖以下2个知识点:

知识点题目数核心内容
Spring 集成9题SqlSessionFactoryBean、SqlSessionTemplate、Mapper扫描、事务管理
MyBatis-Spring5题自动配置、多数据源、AbstractRoutingDataSource、动态切换

学习建议

  • 先阅读完整指南文章,理解Spring-MyBatis集成的整体架构
  • 重点掌握@MapperScan和SqlSessionFactoryBean的配置方式
  • 理解事务管理器的选择与配置
  • 多数据源部分是进阶内容,结合动态数据源路由理解其原理
  • 建议在Spring Boot项目中动手实践配置

📝 配套习题(14 题)

💡 参考答案在文末
判断题
1

在 Spring 项目中集成 MyBatis 时,必须引入 mybatis-spring 依赖包,否则无法实现两者的集成。

A

B

2

Spring 管理 MyBatis 事务时,默认情况下只有 RuntimeException 及其子类会触发事务回滚,检查型异常(Checked Exception)不会触发回滚。

A

B

3

在 Spring-MyBatis 多数据源配置中,如果两个数据源位于不同的数据库实例,使用普通的 DataSourceTransactionManager 可以保证跨库操作的原子性和一致性。

A

B

单选题
4

在 Spring-MyBatis 集成中,用于创建 SqlSessionFactory 的 Spring Bean 类是哪一个?

A

SqlSessionFactoryBean

B

SqlSessionTemplate

C

MapperScannerConfigurer

D

DataSourceTransactionManager

5

在 Spring-MyBatis 集成中,要实现声明式事务管理,应该使用哪个事务管理器类?

A

DataSourceTransactionManager

B

JpaTransactionManager

C

HibernateTransactionManager

D

MyBatisTransactionManager

6

在 Spring 中注入 MyBatis Mapper 接口时,以下哪种方式是推荐的现代做法?

A

使用 @MapperScan 注解批量扫描 Mapper 接口包

B

为每个 Mapper 接口手动编写 @Bean 配置

C

使用 XML 配置文件逐个注册 Mapper

D

通过反射手动创建 Mapper 实例

7

在 Spring-MyBatis 中配置多数据源时,以下哪种方式是最佳实践?

A

为每个数据源创建独立的 SqlSessionFactory 和 SqlSessionTemplate,并使用 @Qualifier 区分注入

B

在同一个 SqlSessionFactory 中配置多个 DataSource

C

使用 ThreadLocal 手动切换数据源

D

修改 MyBatis 源码支持多数据源

多选题
8

关于 Spring-MyBatis 多数据源配置,以下哪些说法是正确的?

A

需要为每个数据源配置独立的 SqlSessionFactoryBean

B

可以使用 @Primary 注解标注主要数据源的 Bean

C

多数据源场景下无法使用 Spring 的声明式事务

D

可以通过 AbstractRoutingDataSource 实现动态数据源切换

9

在 Spring 框架中集成 MyBatis 时,以下哪些是必需或常用的核心配置组件?

A

SqlSessionFactoryBean

B

DataSource

C

MapperScannerConfigurer

D

SqlSessionTemplate

10

关于 Spring-MyBatis 事务管理集成,以下哪些说法是正确的?

A

可以通过 @Transactional 注解实现声明式事务

B

MyBatis 的 SqlSession 会自动参与 Spring 管理的事务

C

事务传播行为 REQUIRES_NEW 会挂起当前事务并创建新事务

D

使用 SqlSessionTemplate 可以确保同一个事务中使用同一个 SqlSession

11

关于 MyBatis Mapper 接口在 Spring 中的注入,以下哪些说法是正确的?

A

Mapper 接口不需要提供实现类,MyBatis 会自动创建动态代理

B

可以使用 @Mapper 注解标注单个 Mapper 接口

C

@MapperScan 的 basePackages 属性支持指定多个扫描路径

D

Mapper 接口注入后可以直接在 Service 层通过 @Autowired 注入使用

填空题
12

在使用 @Configuration 类配置 Spring-MyBatis 集成时,SqlSessionFactoryBean 需要通过 setDataSource 方法设置 ____________,通过 setTypeAliasesPackage 方法设置 ____________

13

@MapperScan 注解中,____________ 属性用于指定 Mapper 接口的扫描包路径,____________ 属性可以限制只扫描带有特定注解的接口。

14

使用 Spring 的 ____________ 实现动态数据源切换时,需要重写 ____________ 方法来返回当前数据源的标识。

参考答案
1.正确 2.正确 3.错误 4.A 5.A 6.A 7.A 8.A;B;D 9.A;B;C;D 10.A;B;C;D 11.A;B;D 12.数据源;类型别名包路径 13.basePackages;annotationClass 14.AbstractRoutingDataSource;determineCurrentLookupKey
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 TypeHandler 自定义类型处理器专题
下一个专题 → 动态 SQL专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码