全部学科
Python全栈
python
NodeJS全栈
nodejs

接口绑定与动态代理专题测试

9 题 40 分钟 难度:★

考察知识点

  • Mapper 接口与 XML 映射文件的绑定规则(namespace 与接口全限定名对应)
  • MyBatis 动态代理的工作原理(SqlSession.getMapper)
  • 接口方法名与 SQL 标签 id 的对应关系
  • 接口方法参数与 SQL 参数的映射方式
  • 动态代理的使用场景与优势
💡 参考答案在文末
判断题
1

Mapper 接口方法的返回值类型必须与 XML 映射文件中对应 SQL 的 resultType 属性指定的类型完全一致,否则 MyBatis 会抛出异常。

A

B

单选题
2

MyBatis 实现 Mapper 接口与 XML 映射文件绑定的核心机制是什么?

A

编译时注解处理

B

JDK 动态代理 + XML 解析

C

CGLIB 字节码增强

D

AOP 切面拦截

3

关于 MyBatis 中 Mapper 接口的定义,以下说法正确的是?

A

Mapper 接口必须编写实现类来完成数据库操作

B

Mapper 接口方法的参数必须与 XML 中 parameterType 完全一致

C

Mapper 接口可以继承其他接口,继承的方法也会被 MyBatis 识别

D

Mapper 接口方法只能返回实体对象,不能返回 Map 或基本类型

4

以下代码中,userMapper 对象的实际类型是什么?

Java
SqlSession session = sqlSessionFactory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
A

UserMapper 接口的实现类实例

B

JDK 动态代理对象,类型为 com.sun.proxy.$ProxyX

C

MyBatis 内部生成的 UserMapperImpl 类实例

D

CGLIB 生成的代理对象

5

关于通过 SqlSession.getMapper() 获取并使用 Mapper,以下哪些说法是正确的?

A

每次调用 getMapper() 都会创建一个新的代理对象实例

B

getMapper() 返回的代理对象方法调用后,不需要手动提交事务,默认自动提交

C

使用完 Mapper 后,应该关闭其关联的 SqlSession 以释放数据库连接

D

同一个 SqlSession 多次调用 getMapper() 返回的是同一个代理实例

多选题
6

关于 MyBatis 接口绑定原理,以下哪些描述是正确的?

A

XML 映射文件的 namespace 必须与 Mapper 接口的全限定类名一致

B

XML 中 SQL 语句的 id 必须与接口方法名一致

C

接口方法可以有多个重载方法

D

MyBatis 在初始化时会解析 XML 并将映射信息注册到 Configuration 对象中

7

以下关于 Mapper 接口定义方式,哪些是正确的?

A

可以使用 @Select、@Insert 等注解直接在接口方法上编写 SQL

B

使用注解编写 SQL 时,仍然需要编写 XML 映射文件

C

同一个接口可以部分方法使用注解、部分方法使用 XML 映射

D

注解方式编写的 SQL 不能使用动态 SQL 功能

填空题
8

MyBatis 为 Mapper 接口创建的动态代理对象的核心类是____________,该代理类实现了____________接口,在 invoke 方法中通过____________来执行 SQL 语句。

9

调用 session.getMapper(UserMapper.class) 时,SqlSession 内部会通过____________查找已注册的接口,然后通过____________工厂类创建动态代理对象,最终返回的代理对象在方法调用时会委托给____________执行 SQL 逻辑。

参考答案
1.错误 2.B 3.C 4.B 5.C 6.A;B;D 7.A;C 8.MapperProxy;InvocationHandler;MapperMethod 9.MapperRegistry;MapperProxyFactory;MapperMethod
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 批量操作与性能优化专题测试
下一套试卷 → 插件开发高级应用专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码