MyBatis进阶提升考试题,快来测测自己掌握的情况吧

2022-11-14 19:27:07 浏览数 (1)

MyBatis进阶测试

  波哥给大家分享一套MyBatis的面试题,测测自己掌握的情况吧

一、选择题

1.MyBatis中获取SqlSessionFactory对象使用到的设计模式是? A.工厂模式 B.建造者模式 C.装饰者模式 D.代理模式

2.如下哪个不属于MyBatis的动态SQL中的标签 A.if B.choose C.foreach D.else

3.关于#{}和

{}下面说法错误的是? A.

方式没有预编译,不会缓存 B.#方式没有预编译,不会缓存 C.$不能防止SQL注入 D.#能防止SQL注入

4.以下关于MyBatis的说法错误的是? A.MyBatis默认支持一级缓存但不支持二级缓存 B.MyBatis提供了动态SQL语句,这个也是MyBatis流行的一个主要原因 C.MyBatis支持延迟加载 D.MyBatis中支持逻辑分页

5.在使用MyBatis的时候,除了可以使用@Param注解来实现多参数入参,还可以用()传递多个参数值。 A.Map B.List C.数组 D.Set

6.以下不属于MyBatis基础支持模块的是? A.日志模块 B.binding模块 C.解析器模块 D.插件

7.Executor默认的类型是 A.SIMPLE B.REUSE C.BATCH

8.在MyBatis中StatementHandler接口的默认实现是? A.SimpleStatementHandler B.PreparedStatementHandler C.CallableStatementHandler

9.关于反射工具描述错误的是

A.对常见的反射操作进一步封装,提供了更加简洁方便的API B.每一个Reflector对象都对应一个Java类 C.通过ReflectorFactory获取Reflector对象 D.ReflectorFactory中不支持缓存Reflector对象

10.关于缓存下面描述错误的是 A.缓存设计使用到了装饰器模式 B.缓存中的PerpetualCache中数据是保持在内存中的 C.二级缓存默认是关闭的 D.在执行查询操作时会先在一级缓存中查找然后再去二级缓存中查找

11.下面关于TypeHandler描述错误的是? A.TypeHandler的作用是实现JavaType和JDBCType的双向转换 B.BaseTypeHandler实现了TypeHandler接口实现了对空数据的处理 C.系统中的众多TypeHandler实现类都保存在TypeHandlerRegistry中,方便我们查找使用 D.我们自定义的TypeHandler仅仅只需要继承BaseTypeHandler即可

12.下面关于日志模块说法错误的是

A.日志模块使用到了适配器模式 B.日志模块中默认使用的日志框架是slf4j C.日志模块中jdbc包提供了将日志信息保存到数据库中的功能 D.我们可以在settings配置中来指定我们要使用的日志框架

13.关于binding模块描述错误的是 A.MapperRegistry中保存了接口和MapperProxy的对应关系 B.MapperRegistry中保存了接口和MapperProxyFactory的对应关系 C.MapperProxyFactory的作用是创建接口的代理对象。 D.本质上Mapper接口的代理对象就是MapperProxy

14.下面关于缓存的描述错误的是 A.MyBatis中自带的有一级缓存和二级缓存 B.MyBatis中的一级缓存默认就是打开的 C.MyBatis中的二级缓存默认是关闭的,需要我们手动打开 D.我们执行SQL查询操作的时候是先检查一级缓存再检查二级缓存的

15.MyBatis中核心对象的生命周期描述错误的是? A.SqlSessionFactoryBuilder实例的最佳作用域是方法范围,也就是定义为本地方法变量既可 B.SqlSessionFactory实例的生命周期应该在整个应用的执行期间都存在 C.SqlSession实例时线程不安全的,因此其生命周期应该是请求或方法范围 D.SqlSession实例通常定义为一个类的静态变量

16.关于Executor的描述错误的是? A.SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。 B.ReuseExecutor:每执行一次update或者select操作,会以SQL为key查找Statement对象,存在就使用,不存在就创建,用完后不关闭,而是以SQL为key保存在Map对象中,实现了Statement的复用 C.BatchExecutor:执行update(没有select,JDBC批处理不支持select),将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理。与JDBC批处理相同。 D.Executor的这些特点,都严格限制在SqlSessionFactory生命周期范围内

17.在MyBatis中关于插件的描述错误的是 A.MyBatis中的插件只能拦截Executor、StatementHandler、ParameterHandler、ResultSetHandler这四个对象中的特定方法,其他对象都是不能拦截的 B.MyBatis中提供的Plugin是实现了InvocationHandler接口的代理类。 C.在自定义拦截器的过程中我们通过@Intercept注解来指定要拦截的方法 D.插件是MyBatis提供给我们来扩展和增强MyBatis功能的

18.关于MyBatis整合Spring中说明错误的是 A.MyBatis整合到Spring中后相关的核心对象会交给Spring容器管理 B.DefaultSqlSession是线程不安全的,所以在Spring中通过SqlSessionTemplate来处理 C.SqlSessionTemplate中是通过同步代码块包保证数据安全的 D.SqlSessionTemplate是通过ThreadLocal来保证数据安全的

二、简单题

1.介绍下MyBatis的工作原理 2.介绍下MyBatis的插件机制 3.介绍下MyBatis的缓存机制

0 人点赞