【基于轻量型架构的WEB开发】课程 作业2 mybatis关联查询、缓存、注解

作业2 mybatis关联查询、缓存、注解

一、单选题

1. <collection>元素的使用

题目:下列关于<collection>元素的描述正确的是()。

  • A. MyBatis就是通过<collection>元素来处理一对多关联关系的
  • B. <collection>元素的属性与<association>元素完全相同
  • C. <collection>元素只能使用嵌套查询方式
  • D. ofType属性与javaType属性对应,它用于指定实体对象中所有属性所包含的元素类型

答案:A

解析:MyBatis通过<collection>元素处理一对多关联关系。

B选项错误,因为association使用javaType属性,而collection使用ofType属性。

C选项错误,因为<collection>元素可以使用嵌套查询或嵌套结果方式。

D选项错误,因为ofType用于指定集合类型所包含的元素的类型。

2. @Insert注解的使用

题目:关于@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

解析 :选项 B :正确使用了 @Insert 注解,并且 SQL 语句中的占位符格式正确。

选项 A:缺少了 @ 符号,导致 Insert 注解无效。

选项 C:虽然使用了 @Insert 注解,但在 SQL 语句中的占位符之间缺少逗号,导致 SQL 语法错误。

选项 D:虽然使用了 @Insert 注解,但在 SQL 语句中的占位符格式错误,应使用 #{} 而不是 {}。

3. @Select注解的使用

题目:要求根据员工的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

解析 :正确的写法是@Select("select * from tb_worker where id = #{id}")。

B选项和D选项的参数绑定方式不正确。

C选项使用了问号占位符,这在MyBatis中不适用。

二、判断题

4. @Insert注解的作用

题目:MyBatis的@Insert注解就是将SQL语句直接写在接口上,使得代码书写更加简单,减少了大量的XML文件的配置。

答案:对

5. 核心配置文件的扫描方式

题目:MyBatis中,核心配置文件中的内容的扫描方式是从上到下扫描。

答案:对

解析:MyBatis 在启动时会从上到下依次读取核心配置文件中的配置项。

6. 多对多关联映射

题目:MyBatis中多对多关联映射同样有嵌套查询和嵌套结果两种关联方式。

答案:对

7. 一级缓存的行为

题目:MyBatis一级缓存被清空之后,再次使用SQL查询语句访问数据库时,MyBatis会重新访问数据库。

答案:对

8. 关联关系中的外键

题目:关系型数据库的关联关系中,在"一"的一方,添加"多"的一方的主键作为外键。

答案:错

解析:应该在"多"的一方添加"一"方的主键为外键。

9. @Param注解的功能

题目:MyBatis中,@Param注解的功能是指定SQL语句中的参数,通常用于SQL语句中参数比较多的情况。

答案:对

10. @Update注解的参数

题目:MyBatis中,@Update注解的参数可以是一条插入语句,也可以是一条更新语句。

答案:对

解析:@Update注解通常用于映射更新或删除类型的SQL语句,也可以用于执行插入语句。

在MyBatis中,@Update 注解通常用于映射更新(UPDATE)或删除(DELETE)类型的SQL语句。虽然它的名称是 @Update,但它不仅仅局限于更新操作,也可以用于执行插入(INSERT)语句。

11. 多对多关联关系的维护

题目:在数据库中,表与表之间的多对多关联关系通常使用一个中间表来维护。

答案:对

解析:E-R图中的多对多联系转换为关系模型时,是转换成一个表。

12. <association>元素的配置方式

题目:<association>元素只有一种配置方式,即嵌套结果方式。

答案:错

解析:还可以用嵌套查询的方式。

13. @Results注解的使用

题目:在@Results注解中,可以包含多个@Result注解,一个@Result注解完成实体类中一个属性和数据表中一个字段的映射。

答案:对

解析:见教材75页。

三、填空题

14. <association>元素的【】属性用于指定引入嵌套查询的子SQL语句。

答案:select

15. 在@Result注解中,【】属性用来指定POJO中的关联属性。

答案:property

16. MyBatis的二级缓存是【】级别的缓存。

答案:Mapper

17. <collection>元素的属性中,用于指定实体类对象中集合类属性所包含的元素类型的是【】。

答案:ofType

18. 在使用<association>元素时,它的fetchType属性有【】和eager两个属性值。

答案:lazy

解析:见教材45页,lazy表示关联映射延迟加载,eager表示不延迟加载。

19. MyBatis使用【】注解实现数据表的一对多关联查询,它作用等同于XML配置文件中的<collection>元素。

答案:@Many

20. 【】注解用于映射删除语句,其作用等同于XML配置文件中的<delete>元素。

答案:@Delete

四、多选题

21. <cache>元素的eviction属性可选值

题目:下列属于<cache>元素的eviction属性可选值的是()。

  • A. FIFO
  • B. LRU
  • C. SOFT
  • D. WEAK

答案:ABCD

解析:eviction设置缓存的收回策略,见教材67页。

相关推荐
一水鉴天几秒前
统一对象拓扑(UOT)设计全链定稿:从三件事分离到三继承 之1 20261010(豆包“查看聊天内容”继续)
前端·css
栖凤12 分钟前
Java 的 try-catch 在 Agent 里失效了,我用了 5 个模式才兜住
java·前端·python
粥里有勺糖12 分钟前
视野修炼第136期 | 前端小恐龙"Deno"被收购
前端·github·ai编程
修炼的dance17 分钟前
页面塞了13.88 MB字体,导出的PDF只有71 KB
前端
qq_3691736318 分钟前
如何将 AI 生成的 HTML 网页发布成在线链接?不用自己搭建服务器
前端·人工智能·html·效率工具·html 发布
风花一世月25 分钟前
⚡ 我把一座含氢能源园区搬进了浏览器(五类能流实时算守恒,在线直接玩)
前端·人工智能
羲云1 小时前
Claude 越界事件之后:Agent 权限设计为什么不能只靠提示词
前端
用户8314550980311 小时前
如一 Agent 架构解读(二):上下文工程——为模型构造它唯一的现实
人工智能·架构
怕浪猫1 小时前
Agent 工程化面试:从开发到部署的 5 个关键问题
面试·架构·github
行者全栈架构师1 小时前
【鸿蒙心迹】鸿蒙网络请求架构实战——@ohos.net.http 到 Axios 封装、拦截器与统一错误处理(HarmonyOS 7.x)
前端·算法·架构