还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
mybatis面试题及答案
一、单项选择题(共30题,每题1分)MyBatis是一款用于**()**的开源持久层框架A.数据展示B.业务逻辑处理C.数据库交互D.前端页面渲染MyBatis的核心接口不包括以下哪项?A.SqlSessionB.SqlSessionFactoryC.ConnectionD.Executor配置MyBatis时,核心配置文件的默认名称是?A.mybatis-config.xmlB.application.ymlC.db.propertiesD.mapper.xml在MyBatis中,#{}和${}的主要区别是?A.#{}用于查询,${}用于插入B.#{}会预编译防注入,${}是字符串拼接C.#{}只能用在XML中,${}只能用在注解中D.两者无区别以下哪个标签不属于MyBatis的动态SQL标签?A.B.第1页共14页C.D.MyBatis的SqlSession对象是通过哪个类创建的?A.SqlSessionFactoryB.ExecutorC.MapperD.SqlSessionTemplate关于MyBatis的一级缓存,说法错误的是?A.作用域是SqlSessionB.缓存的是Statement的结果C.每次执行commit后缓存会清空D.可通过SqlSession.clearCache手动清空在MyBatis中,使用resultType和resultMap的区别是?A.resultType用于简单类型,resultMap用于复杂类型B.resultType需手动定义字段映射,resultMap自动映射C.resultType只能用在XML中,resultMap只能用在注解中D.两者完全相同MyBatis的事务管理类型不支持以下哪种?A.JDBCB.MANAGEDC.JTAD.SESSION以下哪种方式不能作为MyBatis的参数传递方式?A.基本类型B.JavaBean第2页共14页C.MapD.数据库连接对象MyBatis中,当查询结果是List集合时,返回类型应设置为?A.ListB.List实体类名C.实体类名[]D.无需设置关于MyBatis的Mapper接口,说法错误的是?A.接口方法名需与XML中的id一致B.接口可通过SqlSession.getMapper接口.class获取实例C.接口方法参数只能是基本类型或MapD.接口可配合注解直接定义SQLMyBatis的二级缓存默认作用域是?A.SqlSessionB.全局C.MapperD.无缓存在XML映射文件中,哪个标签用于定义返回结果与实体类的映射关系?A.selectB.resultMapC.parameterMapD.insert以下哪种情况会导致MyBatis的一级缓存失效?A.执行select查询第3页共14页B.执行commit操作C.执行delete操作D.执行update操作MyBatis中,使用标签遍历集合时,哪个属性用于指定集合类型?A.collectionB.itemC.indexD.separator关于MyBatis的延迟加载,说法正确的是?A.全局配置中无法开启延迟加载B.延迟加载默认对所有关联查询生效C.需在resultMap中配置association或collection的fetchType=lazyD.延迟加载会导致性能更差MyBatis的SqlSessionFactoryBuilder的作用是?A.创建SqlSessionFactoryB.创建SqlSessionC.解析配置文件D.执行SQL语句在MyBatis中,当查询结果为单个值时,返回类型应设置为?A.实体类B.MapC.基本类型(如int、String)D.List以下哪种方式不是MyBatis的动态SQL使用场景?第4页共14页A.根据条件动态拼接查询条件B.动态插入不同字段C.固定SQL语句无需变化D.动态删除部分数据MyBatis的核心配置文件中,用于配置环境信息的标签是?A.environmentsB.environmentC.dataSourceD.mappers关于MyBatis的事务,说法错误的是?A.事务默认是手动提交B.可通过SqlSession.commit提交事务C.事务回滚可通过SqlSession.rollback实现D.配置中设置defaultTransactionIsolationLevel可指定隔离级别在MyBatis中,当实体类属性名与表字段名不一致时,以下哪种方式无法解决映射问题?A.使用resultMap手动指定映射关系B.在配置文件中开启驼峰命名转换C.为属性添加@Alias注解D.直接使用字段名作为参数名MyBatis的插件机制通过哪个接口实现自定义拦截?A.InterceptorB.PluginC.HandlerD.Invoker第5页共14页以下哪个是MyBatis中用于批量插入的标签?A.batchB.insert配合foreachC.bulkD.insert的useGeneratedKeys属性MyBatis的缓存实现类BaseCache的父接口是?A.CacheB.PerpetualCacheC.TransactionalCacheD.LoggingCache关于MyBatis的Mapper接口动态代理,说法错误的是?A.接口方法与XML中的id必须完全一致B.接口方法的参数名与XML中的parameterType需对应C.接口方法的返回类型需与resultType或resultMap对应D.无需手动编写实现类,MyBatis自动生成代理对象在MyBatis中,当需要处理一对多关联查询时,应使用哪个标签?A.associationB.collectionC.resultD.idMyBatis的全局配置文件中,哪个标签用于加载Mapper映射文件?A.mapperB.mappersC.includeD.properties第6页共14页以下哪种情况不会导致MyBatis的二级缓存失效?A.执行commit操作B.执行rollback操作C.执行select查询D.关闭SqlSession
二、多项选择题(共20题,每题2分)MyBatis的核心组件包括以下哪些?A.SqlSessionFactoryB.ExecutorC.MappedStatementD.SqlSession关于MyBatis的标签,说法正确的有?A.可自定义复杂类型的映射关系B.可处理字段名与属性名不一致的问题C.可配置关联查询(一对
一、一对多)D.必须与标签配合使用MyBatis的动态SQL标签包括以下哪些?A.B.C.D.以下关于MyBatis参数传递的说法,正确的有?A.可传递基本类型、JavaBean、MapB.多个参数需用@Param注解指定名称C.使用Map传递参数时,键名需与SQL中#{}的参数名一致第7页共14页D.传递JavaBean时,属性名需与SQL参数名一致MyBatis的缓存机制涉及哪些缓存类型?A.一级缓存B.二级缓存C.本地缓存D.分布式缓存关于MyBatis的事务管理,说法正确的有?A.JDBC事务依赖数据库连接的自动提交B.MANAGED事务不提交也不关闭连接C.事务隔离级别可在配置文件中设置D.事务传播行为是MyBatis的核心特性以下哪些方式可用于解决MyBatis的N+1查询问题?A.使用标签配置关联查询B.开启延迟加载C.使用嵌套查询代替循环查询D.手动关闭二级缓存MyBatis的全局配置文件中,可配置的内容包括?A.环境信息(开发/测试/生产)B.类型别名(typeAliases)C.自定义插件(plugins)D.Mapper映射文件路径(mappers)关于MyBatis的#{}和${},说法正确的有?A.#{}会将参数预编译为SQL语句的一部分B.${}会直接将参数拼接到SQL中,可能导致注入风险C.#{}适用于参数值,${}适用于动态表名/列名第8页共14页D.使用${}时需确保参数安全,避免拼接恶意SQLMyBatis的一级缓存特性包括?A.作用于SqlSession周期B.缓存结果为Statement级C.执行增删改操作后会清空缓存D.可通过SqlSession.clearCache手动清空以下哪些属于MyBatis的动态SQL场景?A.根据用户输入的条件动态拼接WHERE子句B.根据不同参数动态选择查询字段C.批量插入多条数据D.固定查询所有数据MyBatis中,关于Mapper接口开发的说法正确的有?A.接口方法名需与XML中的id一致B.接口方法的参数可通过@Param注解指定C.接口方法的返回类型可直接写实体类或集合D.无需编写实现类,MyBatis自动生成代理对象以下哪些标签可用于MyBatis的查询结果映射?A.resultB.idC.associationD.collectionMyBatis的延迟加载配置需要哪些条件?A.全局配置中开启lazyLoadingEnabled=trueB.关联查询标签(association/collection)设置fetchType=lazyC.开启二级缓存第9页共14页D.使用MyBatis的动态代理方式关于MyBatis的二级缓存,说法正确的有?A.默认是关闭的,需手动配置B.作用于全局,多个SqlSession共享C.可缓存任意类型的查询结果D.需配置cache标签启用MyBatis的插件(Interceptor)可拦截的对象包括?A.ExecutorB.StatementHandlerC.ResultSetHandlerD.ParameterHandler以下哪些情况会导致MyBatis的SQL执行失败?A.Mapper接口方法名与XML中id不一致B.参数类型与SQL中parameterType不匹配C.返回类型与resultType或resultMap不匹配D.动态SQL中使用了错误的标签MyBatis中,关于类型别名(typeAliases)的说法正确的有?A.可通过typeAlias标签指定别名B.可通过package标签批量指定包下的类别名(默认类名小写)C.别名区分大小写D.内置别名包括int、String等基本类型MyBatis的核心配置文件中,标签的作用包括?A.配置多个环境(如开发/测试/生产)B.指定默认环境C.配置数据源(dataSource)第10页共14页D.配置事务管理器(transactionManager)以下哪些属于MyBatis的最佳实践?A.使用#{}代替${},防止SQL注入B.复杂映射优先使用resultMap而非resultTypeC.避免在循环中执行单独的SQL查询(N+1问题)D.二级缓存仅对单表查询有效,多表关联查询不建议使用
三、判断题(共20题,每题1分)MyBatis是一款全自动化的ORM框架()MyBatis的#{}会将参数自动转义,防止SQL注入()MyBatis的二级缓存默认是开启的()在MyBatis中,使用注解开发时不需要编写Mapper.xml文件()MyBatis的SqlSession是线程安全的()MyBatis的标签中,collection属性必须指定为list()MyBatis的一级缓存作用于SqlSession和Mapper级别()MyBatis的事务默认是自动提交的()MyBatis的动态SQL只能在XML映射文件中使用,注解中不支持()MyBatis的resultMap标签中,标签用于指定主键字段()MyBatis的#{}和${}都可以用于表名或列名的动态拼接()MyBatis的插件机制通过JDK动态代理实现()MyBatis的延迟加载默认对association和collection关联查询生效()MyBatis的SqlSessionFactory是线程安全的,可重复使用()MyBatis的标签与Java的switch语句功能类似()MyBatis的全局配置文件中,标签用于引入外部配置文件()第11页共14页MyBatis的二级缓存可缓存基本类型、JavaBean和集合类型的查询结果()MyBatis的参数传递中,多个参数必须用Map或JavaBean封装,不能用基本类型()MyBatis的Mapper接口与XML文件的映射关系是通过接口全限定名和XML文件名匹配的()MyBatis的事务传播行为是框架内置的核心特性之一()
四、简答题(共2题,每题5分)简述MyBatis中#{}和${}的区别及使用场景说明MyBatis的一级缓存和二级缓存机制,以及如何禁用一级缓存答案部分
一、单项选择题1-5C C A BC6-10C CA C C11-15CCB BB16-20A CA AC21-25A ACAB26-30A AB AC
二、多项选择题ABCD
2.ABC
3.ABCD
4.ABCD
5.ABABC
7.AC
8.ABCD
9.ABCD
10.ABDABC
12.ABCD
13.ABCD
14.AB
15.ABDABCD
17.ABCD
18.ABD
19.ABCD
20.ABC
三、判断题错(半自动化ORM框架,需手动编写SQL)第12页共14页对(#{}预编译参数,自动转义)错(默认关闭,需在中配置cacheEnabled=true)对(注解开发可直接在接口方法上写@Select等注解)错(SqlSession是线程不安全的,需每个线程独立创建)错(可自定义,如@Param指定的参数名)错(一级缓存仅作用于SqlSession级别)错(默认是手动提交,需调用commit提交)错(注解中可通过@SelectProvider等动态SQL注解)对(用于主键,用于普通字段)错(${}用于动态表名/列名,#{}不适用)对(通过Plugin类实现JDK动态代理)错(默认不生效,需配置fetchType=lazy)对(SqlSessionFactory是单例,可重复使用)对(类似switch,对应case,对应default)对(引入外部文件)对(支持基本类型、JavaBean、集合等)错(多个参数可用@Param注解指定名称,无需必须用Map/JavaBean)对(默认通过接口全限定名匹配XML文件)错(事务传播行为是Spring的特性,MyBatis本身不支持)
四、简答题#{}和${}的区别及使用场景#{}预编译参数,会将参数转为占位符,自动转义防SQL注入,适用于参数值(如WHERE id=#{})${}字符串拼接,直接将参数值拼入SQL,不防注入,适用于动态表名、列名等(如FROM${tableName})第13页共14页使用时需注意${}需确保参数安全,避免恶意SQL一级缓存和二级缓存机制及禁用一级缓存一级缓存作用于SqlSession,缓存Statement查询结果,同一SqlSession内重复查询相同SQL会直接返回缓存数据;执行增删改操作后清空缓存二级缓存全局作用域,多个SqlSession共享,需配置标签启用,默认使用PerpetualCache实现,支持自定义缓存禁用一级缓存调用SqlSession.clearCache方法,或执行增删改操作后自动清空第14页共14页。
个人认证
优秀文档
获得点赞 0