mybatis关联查询、缓存、注解
一. 单选题
1. 下列关于 <collection>
元素的描述正确的是()。
A. MyBatis 就是通过 <collection>
元素来处理一对多关联关系的
B. <collection>
元素的属性与 <association>
元素完全相同
C. <collection>
元素只能使用嵌套查询方式
D. ofType 属性与 javaType 属性对应,它用于指定实体对象中所有属性所包含的元素类型
正确答案是 A.
解析:
- B 选项错误是因为
<association>
使用javaType
属性,而<collection>
使用ofType
属性; - C 选项错误是因为
<collection>
不仅可以使用嵌套查询方式,也可以使用嵌套结果方式; - D 选项错误是因为
ofType
用于指定集合元素的类型,而不是实体对象中的所有属性类型。
2. 关于 @Insert
注解的使用,下列代码书写正确的是()。
A. Insert("insert into tb_worker(name,age,sex,worker_id)" +"values(#{name},#{age},#{sex},#{worker_id})") int insertWorker(Worker worker);
B. @Insert("insert into tb_worker(name,age,sex,worker_id)" +"values(#{name},#{age},#{sex},#{worker_id})") int insertWorker(Worker worker);
C. @Insert("insert into tb_worker(name,age,sex,worker_id)" +"values(#{name} #{age} #{sex} #{worker_id})") int insertWorker(Worker worker);
D. @Insert("insert into tb_worker(name,age,sex,worker_id)" +"values({name},{age},{sex},{worker_id})") int insertWorker(Worker worker);
正确答案是 B.
解析:
- A 选项缺少
@
符号; - C 选项参数之间缺少逗号;
- D 选项参数格式错误,应使用
${}
或#{}
。
3. 要求根据员工的 id 查找员工信息,下列使用 @Select
注解的代码书写正确的是()。
A. @Select(“select * from tb_worker where id = #{id}”)
B. @Select("select * from tb_worker where id = #id"
C. @Select("select * from tb_worker where id = ?")
D. @Select(“select * from tb_worker where id = {id}”)
正确答案是 A.
解析:
- B 选项
#id
缺少{}
; - C 选项使用
?
而不是#{}
; - D 选项
{id}
格式错误,应为#{id}
。
二. 判断题
-
MyBatis的@Insert注解就是将SQL语句直接写在接口上,使得代码书写更加简单,减少了大量的XML文件的配置。
正确答案是 A. 对。
-
MyBatis中,核心配置文件中的内容的扫描方式是从上到下扫描
正确答案是 A. 对。见教材15页。
解析:配置文件中的元素按照它们出现的顺序被解析和处理。
-
MyBatis中多对多关联映射同样有嵌套查询和嵌套结果两种关联方式。
正确答案是 A. 对。
-
MyBatis一级缓存被清空之后,再次使用SQL查询语句访问数据库时,MyBatis会重新访问数据库。
正确答案是 A. 对。
-
关系型数据库的关联关系中,在“一”的一方,添加“多”的一方的主键作为外键。
正确答案是 B. 错。
解析:应该在“多”的一方添加“一”方的主键为外键。
-
MyBatis中,@Param注解的功能是指定SQL语句中的参数,通常用于SQL语句中参数比较多的情况。
正确答案是 A. 对。
-
MyBatis中,@Update注解的参数可以是一条插入语句,也可以是一条更新语句
正确答案是 A. 对。
解析:在MyBatis中,@Update 注解通常用于映射更新(UPDATE)或删除(DELETE)类型的SQL语句。虽然它的名称是 @Update,但它不仅仅局限于更新操作,也可以用于执行插入(INSERT)语句。
-
在数据库中,表与表之间的多对多关联关系通常使用一个中间表来维护
正确答案是 A. 对。
-
<association>元素只有一种配置方式,即嵌套结果方式。
正确答案是 B. 错。
解析:<association> 元素支持嵌套查询和嵌套结果方式。
-
在@Results注解中,可以包含多个@Result注解,一个@Result注解完成实体类中一个属性和数据表中一个字段的映射。
正确答案是 A. 对。见教材75页。
三. 填空题
-
<association>元素的【select】属性用于指定引入嵌套查询的子SQL语句。
-
在@Result注解中,【property】属性用来指定POJO中的关联属性。
-
MyBatis的二级缓存是【Mapper】级别的缓存。
-
<collection>元素的属性中,用于指定实体类对象中集合类属性所包含的元素类型的是【ofType】。
-
在使用<association>元素时,它的fetchType属性有【lazy】和eager两个属性值。
-
MyBatis使用【@Many】注解实现数据表的一对多关联查询,它作用等同于XML配置文件中的<collection>元素。
-
【@Delete】注解用于映射删除语句,其作用等同于XML配置文件中的<delete>元素。
四. 多选题
下列属于<cache>元素的eviction属性可选值的是()。
A. FIFO
B. LRU
C. SOFT
D. WEAK
正确答案是 ABCD
解析:<cache>
元素的eviction
属性用于设置缓存的回收策略,可选值包括FIFO(先进先出)、LRU(最近最少使用)、SOFT(软引用)、WEAK(弱引用)。这些策略决定了当缓存达到其容量限制时,哪些条目应该被移除。