MyBatis概念性面试题整理汇总
- MyBatis常见的概念性面试题
-
- 一、概念性填空题
-
- 1、#{}和$ {}的区别是什么?#{}是_____,${}是_____。
- 2、四个核心接口是()用于执行CRUD操作、()处理SQL的参数、()处理返回结果集、()用于执行SQL语句。
- 3、MyBatis中提供了一级缓存和二级缓存,其中()默认存在,不可控制,同一SqlSession范围内的操作共享该缓存,增、删、改后将()。
- 4、Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
- 5、MyBatis是一款优秀的支持自定义SQL查询、存储过程和高级映射的()框架,几乎封装了所有的JDBC代码和参数的手动设置以及结果集的检索,通过XML或注解的方式进行配置映射实现数据库操作,大大提高了开发效率。
- 6、模糊查询like语句应该怎么写?
- 二、概念性单选题
-
- 1、在mybatis的配置文件中,通过( )标签来设置实体类的别名。
- 2、下列( )不属于 MyBatis全局配置文件中的标签。
- 3、在Mybatis中,SQL映射文件中配置insert语句时,在SQLSERVER中插入语句所在的表的ID为自动增长列?
- 4、在 MyBatis 中,操作数据库的核心类是?
- 5、在使用MyBatis的时候,除了可以使用@Param注解来实现多参数入参,还可以用()传递多个参数值。
- 6、 在 MyBatis 中,配置结果映射时,使用( )标签实现多对1的关联?
- 7、MyBatis操作数据库时的接口方法中,如果传入的参数名和动态sql中使用时不一致,则需要使用( )注解修饰。
- 8、在mybatis中,配置结果映射时,使用( )标签实现一对多的关联?
- 9、MyBatis 中对复杂数据映射到一个结果集的配置使用的标签是( )。
- 10、在 MyBatis 动态 SQL 中,循环使用的标签名是( )。
- 11、看程序进行分析:Public UserselectUser(String name,Stringarea);
MyBatis常见的概念性面试题
一、概念性填空题
1、#{}和$ {}的区别是什么?#{}是_____,${}是_____。
正确答案: 预编译处理 字符串替换
2、四个核心接口是()用于执行CRUD操作、()处理SQL的参数、()处理返回结果集、()用于执行SQL语句。
正确答案:1.Executor 2.ParameterHandler 3.ResultSetHandler 4.StatementHandler
3、MyBatis中提供了一级缓存和二级缓存,其中()默认存在,不可控制,同一SqlSession范围内的操作共享该缓存,增、删、改后将()。
正确答案:一级缓存 清除缓存
4、Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
不同的Xml映射文件,如果配置了namespace,那么id____;如果没有配置namespace,那么id____;
正确答案: 可以重复 不能重复
5、MyBatis是一款优秀的支持自定义SQL查询、存储过程和高级映射的()框架,几乎封装了所有的JDBC代码和参数的手动设置以及结果集的检索,通过XML或注解的方式进行配置映射实现数据库操作,大大提高了开发效率。
正确答案:持久层
6、模糊查询like语句应该怎么写?
第一种:在Java代码中添加_____。
第2种:在sql语句中添加_____,会引起sql注入。
正确答案:sql通配符 拼接通配符
二、概念性单选题
1、在mybatis的配置文件中,通过( )标签来设置实体类的别名。
A. properties
B. settings
C. typeAliases
D. dataSource
正确答案: C
2、下列( )不属于 MyBatis全局配置文件中的标签。
A. settings
B. select
C. plugins
D. properties
正确答案: B
3、在Mybatis中,SQL映射文件中配置insert语句时,在SQLSERVER中插入语句所在的表的ID为自动增长列?
下列关于insert标签的说法,正确的是( )
A. 必须要显示插入标识列中的值
B. 使用任何数据库都可以使用自动生成主键策略
C. useGeneratedKeys属性对update标签也有作用
D. 可以使用useGeneratedKeys属性允许标识列的自动增长用于生成主键
正确答案: D
4、在 MyBatis 中,操作数据库的核心类是?
A. SqlSessionFactory
B. SqlSession
C. Session
D. SqlSessionFactoryBuilder
正确答案: B
5、在使用MyBatis的时候,除了可以使用@Param注解来实现多参数入参,还可以用()传递多个参数值。
A. 用Map对象可以实现传递多参数值
B. 用List对象可以实现传递多参数值
C. 用数组的方式传递
D. 用Set集合的方式传递
正确答案: A
6、 在 MyBatis 中,配置结果映射时,使用( )标签实现多对1的关联?
A. many-one
B. one-many
C. association
D. collection
正确答案: C
7、MyBatis操作数据库时的接口方法中,如果传入的参数名和动态sql中使用时不一致,则需要使用( )注解修饰。
A. @RequestParam
B. @Parameter
C. @String
D. @Param
正确答案: D
8、在mybatis中,配置结果映射时,使用( )标签实现一对多的关联?
A. many-one
B. one-many
C. association
D. collection
正确答案: D
9、MyBatis 中对复杂数据映射到一个结果集的配置使用的标签是( )。
A. < resultMap >
B. < result >
C. < map >
D. < collection >
正确答案: A
10、在 MyBatis 动态 SQL 中,循环使用的标签名是( )。
A. for
B. while
C. foreach
D. do-while
正确答案: C
11、看程序进行分析:Public UserselectUser(String name,Stringarea); <selectid="selectUser"resultMap=“BaseResultMap”>
select * fromuser_user_t whereuser_name = #{0} anduser_area=#{1}
#{0} 表示哪一个参数?
A. 程序报错
B. name
C. area
D. 0
正确答案: B
12、MyBatis对JDBC访问数据库的代码进行封装,从而大大简化了数据访问层的重复性代码,它是针对三层架构中( )的解决方案。
A. 表现层
B. 业务逻辑层
C. 持久化层
D. 数据库系统
正确答案: C
13、MyBatis生命周期说法错误的是?
A. SqlSessionFactoryBuilder实例的最佳作用域是方法范围,也就是定义为本地方法变量既可
B. SqlSessionFactory实例的生命周期应该在整个应用的执行期间都存在
C. SqlSession实例时线程不安全的,因此其生命周期应该是请求或方法范围
D. SqlSession实例通常定义为一个类的静态变量
正确答案: D
14、以下不属于一对多的是?
A. 帅哥和美女
B. 学生和班级
C. 投影和学生
D. 学校和班级
正确答案: A
15、在MyBatis中,在进行select查询映射时,下列关于返回类型的说法,正确的是?
A. 只能是resultType
B. 只能是resultMap
C. 可以是resultType或resultMap
D. 以上说法都不正确
正确答案: C
16、配置实体包的别名,正确的写法是?
A. < typeAliases>
< package name=“com.swjd.bean”/>
< /typeAliases>
B. < typeAliases>
< package name=“com/swjd/bean”/>
< /typeAliases>
C. < typeAliase>
< package name=“com.swjd.bean”/>
< /typeAliase>
D. < package>
< package name=“com.swjd.bean”/>
< /package>
正确答案: A
17、编译Java程序的命令是 ?
A. appletviewer
B. javac
C. java
D. javadoc
正确答案: B
18、在MyBatis数据库操作时,需要编写( )和对应的Xml文件,其中Xml文件中编写的是对应Sql语句。
A. 接口和抽象方法
B. 普通类和普通方法
C. 抽象类和抽象方法
D. 普通类和抽象方法
正确答案: A
19、以下关于MyBatis集合类型参数的处理,说法错误的是?
A.当参数为Collection接口,转化为Map, Map的key为collection
B.当参数类型为List接口时,除了collection的值外, list作为key
C.如果参数为数组,也会转化为Map, Map的key为array
D.如果参数为数组,也会转化为Map, Map的key为list
正确答案:D
20、MyBatis中用于表示输入类型的属性名称是?
A. resultType
B. parameterType
C. collection
D. returnType
正确答案:B
21、如何获取自动生成的(主)键值?
A.设置resultMap
B.设置useGeneratedKeys
C.设置keyProperty
D.设置Property
正确答案:C
22、主要用于更新是的mybatis动态sql的标签是?
A Choose(when/otherwise)
B. Set
C. Where
D. Foreach
正确答案:B
23、关于MyBatis中传递多参数的情况,如果参数封装成了Student类,那么应该怎么操作?
A.条件获取数据可以通过# {属性名}来获得
B.条件获取数据可以通过#{arg0}来获得
C.条件获取数据可以通过#{arg1}来获得
D.条件获取数据可以通过#{属性名}或者#(arg0}来获得
正确答案:A
24、映射一对一使用到的标签?
A. < one-to-one >
B. < reference >
C. < collection >
D. < association >
正确答案:D
25、在mybatis3动态SQL中,没有使用下列()标签?
A.for
B.if
C.choose
D.where
正确答案:A
26、MyBatis针对数据库就可操作时,修改方法对应的标签名是?
A.< sql >
B.< insert >
C.< Update >
D.< save >
正确答案:C
27、在MyBatis中调用SqlSessionFactoryBuilder的那个方法获取SqlSession对象?
A. getSession()
B. openSession()
C. session()
D. showSqlSession()
正确答案:B
28、想实现批量删除的动态sql的标记可选择?
A. Choose(when/otherwise)
B. Set
C. Foreach
D. Where
正确答案:C
29、MyBatis针对数据库操作时,增加方法的标签名是?
A.< sql >
B.< insert >
C.< add >
D.< save >
正确答案:B
30、MyBatis编程步骤?
A. Step1:创建SQLSessionFactory Step2:通过SQLSssonFactory创建SQLSsion Step3:通过SQLSssion执行数据库操作Step4:调用session.close()关闭会话
B. Step1:创建SQLSession Step2:通过SQLSession执行数据库操作Step3:调用session.commit()提交事物Step4:调用session.close()关闭会话
C.Step1:创建SQLSession Step2:通过SQL Ssson创建SQLSssonFactory Step3:通过SQL SssionFactory执行数据库操作Step4:调用session.commit()提交事物 Step5:调用session.close()关闭会话
D. Step1:创建SQSessionFactory Step2:通过SQLSessionFactory创建SQLSssion Step3:通过SQL Sssion执行数据库操作Step4:调用Bession.commit()提交事物 Step5:调用session.close()关闭会话
正确答案:D
31、ORM是什么意思?
A.对象数据管理
B.对象关系映射
C.持久化数据
D.持久化对象
正确答案:B
32、关于MyBatis传递数组参数的说法错误的是?
A.在映射文件中取得数组值应该通过< forEach>标签
B.< forEach>标签可以应用于set、List以及数组的取值
C.传递数组的值,和多参数传值一样在映射文件中只能通过< forEach>取值
D.< forEach>标签的open和close属性用于写开始和结束标签
正确答案:C
33、MyBatis中对复杂数据库映射到一个结果集的配置使用的标签的是?
A. < resultMap>
B. < result>
C. < map>
D. < collection>
正确答案:A
34、MyBatis注解中怎么给参数一个名字?
A.@Param C11
B.@Select
C.@Options
D.@Result
正确答案:A
35、一辆汽车由多个零部件组成,且相同的零部件可适用于不同型号的汽车,则汽车实体集与部件实体集之间的联系是?
A.1:M
B.1:1
C.M:1
D.M:N
正确答案:D
36、以下关于MyBatis参数处理的说法错误的是?
A.当传入单个参数时,可以直接取出参数并赋值给xml文件
B.当传入多个参数时,可以直接取出参数并赋值给xml文件
C.当传入多个参数时,可以使用Map接口的方式封装参数并取得值
D.当传入多个参数时,可以使用注解@param的方式标注参数
正确答案:B
37、在Mybatis中指定接收参数类型的属性是()
A.parameterType
B.flushCache
C.parameterType
D.useGeneratedKeys
正确答案:C
38、MyBatis中用于表示返回结果类型的属性名称是 ()
A.resultType
B.parameterType
C.collection
D.returnType
正确答案:A
39、MyBatis的动态SQL中,用于条件判断的标签是( )
A.< if >标签
B.< where >标签
C.< set >标签
D.< trim >标签
正确答案: A
40、下列对MyBatis描述错误的是( )
A.MyBatis是一个实现了ORM思想的框架
B.MyBatis自动生成JDBC代码,但是sql语句仍然需要自己编写
C.使用MyBatis可以生成所有sql语句和jdbc代码,大大提升了开发效率
D.MyBatis更加容易实现对存储过程的调用
正确答案: C
三、概念性多选题
1、对mybatis描述有误的是?
A. MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架
B. MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面
C. Mybatis是一个全ORM(对象关系映射)框架,它内部封装了JDBC
D. MyBatis 只可以使用 XML来配置和映射原生信息
正确答案: C, D
2、Mybatis是如何将sql执行结果封装为目标对象并返回的?
A. id
B. < resultMap>标签
C. 使用sql列的别名
D. resultType
正确答案: B, C
3、mybaties中模糊查询like语句的写法?
A. select * from foo where bar like #{value}
B. select * from foo where bar like #{%value%}
C. select * from foo where bar like %#{value}%
D. select * from foo where bar like “%”${value}"%"
正确答案: A, D
4、Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?选择说法正确的
A. 不同的Xml映射文件,如果配置了namespace,那么id可以重复
B. 如果没有配置namespace,那么id不能重复
C. 如果没有配置namespace,id能重复
D. 不同的Xml映射文件,如果配置了namespace,那么id不可以重复
正确答案: A, B
5、Mybatis的mapper接口调用时候的要求正确的是?
A. Mapper接口方法名和Mapper.xml中定义的每个SQL的id相同;
B. Mapper接口方法的输入参数类型和mapper.xml中定义的每个sqlparameterType类型
相同
C. Mapper接口方法的输入输出参数类型和mapper.xml中定义的每个sql的resultType的
类型相同
D. Mapper.xml文件中的namespace,就是接口的名字
正确答案: A, B, C
6、MyBatis内置类型别名有?
A. _int
B. Integer
C. int
D. String
正确答案: A, C
7、Mybatis动态sql标签有哪些?
A. trim
B. foreach
C. set
D. than
正确答案: A, B, C
8、Mybaits的优点正确的是?
A. 基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影
响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理
B. 与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手
动开关连接
C. 很好的与各种数据库兼容
D. 它是一全个ORM框架,MyBatis不需要程序员自己编写Sql语句。
正确答案: A, B, C
9、实体类中的属性名和表中的字段名不一样怎么处理?
A. 查询的sql语句中定义字段名的别名
B. 不用处理
C. 通过< resultMap>来映射字段名和实体类属性名
D. 通过< resultType>来映射字段名和实体类属性名
正确答案: A, C
10、MyBatis有两种管理器类型,分别是()和()。
A. JDBC
B. MANAGED
C. POOLED
D. JNOI
正确答案: A, B
11、关于MyBatis参数处理说法正确的是?
A.传递单个参数时,MyBatis会自动封装到Map集合中
B.传递单个参数时,MyBatis会自动进行参数的赋值
C.传递多个参数时,MyBatis会自动封装到Map集合中
D.传递多个参数时,MyBatis会自动进行参数的赋值
正确答案:B,C
12、使用MyBatis的mapper接口调用时有哪些要求?
A.Mapper接口方法名和mapper.xml中定义的每个sql的id相同
B.Mapper.xml文件中的namespace即是mapper接口的类路径
C.Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
D.Mapper接口方法色输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
正确答案:A,B,C,D
13、Mybaits的优点()
A.基于SQL语句编程,相当灵活,解除了sql与程序代码的耦合
B.避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
C.提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。
D.不支持级联更新、级联删除。
正确答案:A、B、C