【基于轻量型架构的WEB开发】【章节作业】

作业1 mybatis核心对象、配置文件和映射文件

一. 单选题(共10题,50分)

1. (单选题)以下关于<select>元素及其属性说法错误的是()。

  • A. <select>元素用来映射查询语句,它可以帮助我们从数据库中读取出数据,并组装数据给业务开发人员
  • B. 在同一个映射文件中可以配置多个<select>元素
  • C. resultMap表示外部resultMap的命名引用,返回时可以同时使用resultType和resultMap
  • D. parameterType属性表示传入SQL语句的参数类的全限定名或者别名

正确答案: C:resultMap表示外部resultMap的命名引用,返回时可以同时使用resultType和resultMap;

  • 解析: 在 MyBatis 的 <select> 元素中,resultType 和 resultMap 属性不能同时使用,因为它们分别指定了不同的结果映射方式。resultType 用于指定返回结果的类型,而 resultMap 用于指定一个复杂的结果映射。

2. (单选题)以下有关<properties>元素说法错误的是()。

  • A. <properties>是一个配置属性的元素,该元素的作用是读取外部文件的配置信息
  • B. 使用<property... />元素配置数据库驱动、连接数据库的URL、连接数据库的用户名和连接数据库的密码等数据库连接参数
  • C. 以上说法都正确
  • D. <properties>元素可以通过db.properties文件实现静态参数配置

正确答案: D:<properties>元素可以通过db.properties文件实现静态参数配置;

  • 解析: <properties> 元素用于引入外部属性文件,如 db.properties,但它本身不实现静态参数配置,而是用于将外部文件中的属性注入到 MyBatis 配置中。

3. (单选题)下列元素中,可以为POJO实体类设置别名的是()。

  • A. <mappers>元素
  • B. <properties>元素
  • C. <settings>元素
  • D. <typeAliases>元素

正确答案: D:<typeAliases>元素;

  • 解析: <typeAliases> 元素用于为 Java 类型设置别名,这使得在 MyBatis 配置文件中引用这些类型时更加方便。

4. (单选题)关于SqlSession对象的查询方法返回的结果类型,正确的是()。

  • A. 泛型对象的List集合
  • B. 泛型对象的Map集合
  • C. 泛型对象的Set集合
  • D. 以上说法都正确

正确答案: A:泛型对象的List集合;

  • 解析: SqlSession 的查询方法通常返回一个 List 集合,其中包含查询结果。虽然也可以配置返回 Map 或 Set,但最常见的是 List

5. (单选题)下列元素中,不属于<environments>元素的子元素的是()。

  • A. <transactionManager>
  • B. <environment>
  • C. <dataSource>
  • D. <plugins>

正确答案: D:<plugins>;

  • 解析: <environments> 元素通常包含 <environment> 子元素,而 <plugins> 是用于扩展 MyBatis 功能的配置,不属于 <environments> 的直接子元素。

6. (单选题)以下有关MyBatis映射文件中<insert>元素说法正确的是()。

  • A. useGeneratedKeys(仅对insert有用)此属性会使MyBatis使用JDBC的getGeneratedKeys()方法来获取由数据库内部生产的主键
  • B. <insert>元素的属性与<select>元素的属性相同
  • C. <insert>元素用于映射插入语句,在执行完元素中定义的SQL语句后,没有返回结果
  • D. keyColumn属性用于设置第几列是主键,当主键列不是表中的第一列时需要设置

正确答案: D:keyColumn属性用于设置第几列是主键,当主键列不是表中的第一列时需要设置;

  • 解析: keyColumn 属性在 <insert> 元素中用于指定哪一列是自动生成的主键,这在使用自动增量字段时特别有用。

7. (单选题)假设有一个名称为UserMapper的XML文件,下列关于使用类路径引入映射文件的示例代码正确的是()。

  • A. <mapper resource="com/itheima/mapper/UserMapper.xml"/>
  • B. 以上说法都不正确
  • C. <mappers><mapper resource="com/itheima/mapper/UserMapper.xml"/></mappers>
  • D. <mappers><mapper resource="com/itheima/mapper/UserMapper"/></mappers>

正确答案: C:<mappers><mapper resource="com/itheima/mapper/UserMapper.xml"/></mappers>;

  • 解析: 在 MyBatis 配置文件中,使用 <mappers> 元素来引入多个映射文件,每个 <mapper> 元素指定一个映射文件的路径。

8. (单选题)下列属性中,属于<select>元素中表示结果集的类型是()。

  • A. resultSetType
  • B. keyColumn
  • C. useGeneratedKeys
  • D. keyProperty

正确答案: A:resultSetType;

  • 解析: resultSetType 属性用于指定 MyBatis 如何处理结果集,例如 FORWARD_ONLYSCROLL_INSENSITIVE 等。

9. (单选题)下列关于<mapper>元素的说法正确的是()。

  • A. <mapper>元素是映射文件的根元素
  • B. <mapper>元素的namespace属性是不唯一的
  • C. <mapper>元素不是映射文件的根元素
  • D. <mapper>元素的namespace属性值的命名不一定跟接口同名

正确答案: A:<mapper>元素是映射文件的根元素;

  • 解析: <mapper> 元素是 MyBatis 映射文件的根元素,它定义了映射文件的结构和 SQL 语句。

10. (单选题)下列选项中,正确使用<sql>元素定义一个包含uid、uname和uage字段的代码片段的是()。

  • A. <sql id="userColumns">alias.uid,alias.uname,alias.uage</sql>
  • B. <sql id="userColumns">${alias}.uid;${alias}.uname;${alias}.uage</sql>
  • C. <sql>${alias}.uid,${alias}.uname,${alias}.uage</sql>
  • D. <sql id="userColumns">${alias}.uid,${alias}.uname,${alias}.uage</sql>

正确答案: D:<sql id="userColumns">${alias}.uid,${alias}.uname,${alias}.uage</sql>;

在 MyBatis 中,${alias} 用于直接插入参数值,而不是作为 SQL 语句的一部分。这种方式可以避免 SQL 注入。

二. 判断题(共5题,25分)

11. (判断题)SqlSessionFactory对象是线程安全的,它一旦被创建,在整个应用程序执行期间都会存在。

  • A. 对
  • B. 错

正确答案: 对

  • 解析: SqlSessionFactory 是线程安全的,并且通常在应用程序启动时创建一次,然后在整个应用程序生命周期中重复使用。

12. (判断题)SqlSessionFactory对象的openSession()方法的参数为boolean值时,默认为false。

  • A. 对
  • B. 错

正确答案: 错

  • 解析: openSession() 方法的参数通常用于控制事务的自动提交行为,但默认值依赖于具体的实现和配置。

13. (判断题)<configuration>的子元素必须按照指定的顺序进行配置,否则MyBatis在解析XML配置文件的时候会报错。

  • A. 对
  • B. 错

正确答案: 对

  • 解析: MyBatis 要求配置文件中的元素按照一定的顺序排列,以确保配置的正确性和一致性。

14. (判断题)SqlSession对象是线程不安全的。

  • A. 对
  • B. 错

正确答案: 对

  • 解析: SqlSession 是线程不安全的,因此每个线程都应该有自己的 SqlSession 实例。

15. (判断题)与<insert>元素一样,<update>和<delete>元素在执行完之后,也会返回一个表示影响记录条数的整数。

  • A. 对
  • B. 错

正确答案: 对

  • 解析: 这些元素都返回一个整数,表示 SQL 语句影响的数据库记录数。

三. 填空题(共5题,25分)

16. (填空题)在MyBatis中,<transcationManager>元素可以配置两种类型的事务管理器,分别是____和MANAGED。

正确答案:

(1) JDBC

  • 解析: 这两种事务管理类型分别代表使用 JDBC 管理事务和由容器(如 Spring)管理事务。

17. (填空题)对于数据源的配置,MyBatis框架提供了UNPOOLED、____和JNDI三种数据源类型。

正确答案:

(1) POOLED

  • 解析: 这些数据源类型分别代表无连接池、有连接池和通过 JNDI 查找数据源。

18. (填空题)____元素表示结果映射集,是MyBatis中最重要也是功能最强大的元素。

正确答案:

(1) <resultMap>

  • 解析: <resultMap> 用于定义复杂的结果映射,可以处理关联查询和复杂对象的映射。

19. (填空题)在MyBatis框架中,SqlSession对象由____对象创建。

正确答案:

(1) SqlSessionFactory

解析: SqlSessionFactory 用于创建 SqlSession 实例,这是 MyBatis 操作数据库的主要接口

20. (填空题)通常每一个数据库都只创建一个SqlSessionFactory对象,因此在构建SqlSessionFactory对象时,建议使用____模式。

正确答案:

(1) 单例

  • 解析: 使用单例模式可以确保应用程序中只有一个 SqlSessionFactory 实例,减少资源消耗并提高性能。

四、review

MyBatis 是一个流行的 SQL 映射框架,它提供了灵活的数据库操作方式,通过 XML 配置文件和注解来管理数据库会话。本文将详细解析 MyBatis 的核心对象、配置文件和映射文件,以及它们在实际开发中的应用。

一、MyBatis 核心对象

SqlSessionFactory 和 SqlSession
  • SqlSessionFactory:是 MyBatis 工作流程中的顶层对象,负责生产 SqlSession 对象。它是线程不安全的,通常在应用启动时初始化一次,然后被应用共享。
  • SqlSession:是 MyBatis 工作流程中的中间层对象,负责与管理数据库的交互,如执行 SQL 命令。它是线程不安全的,每个线程都应该有自己的 SqlSession 实例。
事务管理
  • 事务管理器:MyBatis 支持两种事务管理器,JDBC 和 MANAGEDJDBC 指的是 MyBatis 自己管理事务,而 MANAGED 则由容器(如 Spring)来管理事务。

二、配置文件和映射文件

配置文件
  • <configuration>:根元素,可以包含多个子元素,如 <environments><mappers> 等。子元素的顺序在配置中很重要,因为它们定义了 MyBatis 的行为。
映射文件
  • <select>:用于映射查询语句,可以配置多个 <select> 元素在同一个映射文件中。
  • <insert>:用于映射插入语句,可以设置 useGeneratedKeys 属性来获取数据库自动生成的主键。
  • <update> 和 <delete>:用于映射更新和删除语句,执行后返回影响的记录数。
元素属性
  • resultMap:表示外部 resultMap 的命名引用,但不能与 resultType 同时使用。
  • parameterType:表示传入 SQL 语句的参数类的全限定名或别名。
  • resultSetType:用于 <select> 元素中,表示结果集的类型。

三、映射文件的高级特性

  • <sql> 元素:用于定义可重用的 SQL 片段,可以包含在其他 SQL 语句中。

四、知识点速记

单选题

  1. 关于 <select> 元素:不能同时使用 resultType 和 resultMap
  2. <properties> 元素:不直接实现静态参数配置,而是通过引用外部文件实现。
  3. 为 POJO 实体类设置别名:使用 <typeAliases> 元素。
  4. SqlSession 查询方法返回类型:通常返回泛型对象的 List 集合。
  5. <environments> 元素的子元素:不包括 <plugins>
  6. <insert> 元素的属性keyColumn 用于指定哪一列是自动生成的主键。
  7. 引入映射文件:使用 <mappers><mapper resource="路径"/></mappers>
  8. 结果集类型:使用 resultSetType 属性指定。
  9. <mapper> 元素:是映射文件的根元素。
  10. <sql> 元素的使用:使用 ${alias} 插入参数值。

判断题

  • SqlSessionFactory 对象:线程安全,在整个应用程序执行期间存在。
  • openSession() 方法:参数默认值依赖于具体实现。
  • <configuration> 子元素顺序:必须按照指定顺序配置。
  • SqlSession 对象:线程不安全,每个线程应有自己的实例。
  • 影响记录条数<insert><update><delete> 元素执行后返回影响的记录数。

填空题

  • 事务管理器类型JDBC 和 MANAGED
  • 数据源类型UNPOOLEDPOOLEDJNDI
  • 结果映射集元素<resultMap>
  • SqlSession 创建者SqlSessionFactory
  • SqlSessionFactory 对象构建模式:建议使用单例模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144053.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[Python]案例驱动最佳入门:Python数据可视化在气候研究中的应用

在全球气候问题日益受到关注的今天&#xff0c;气温变化成为了科学家、政府、公众讨论的热门话题。然而&#xff0c;全球气温究竟是如何变化的&#xff1f;我们能通过数据洞察到哪些趋势&#xff1f;本文将通过真实模拟的气温数据&#xff0c;结合Python数据分析和可视化技术&a…

【诉讼流程-健身房-违约-私教课-诉讼书提交流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(3)】

【诉讼流程-健身房-违约-私教课-诉讼书提交流程-民事诉讼-自我学习-铺平通往法律的阶梯-讲解&#xff08;3&#xff09;】 1、前言说明2、流程说明3、现场提交&#xff08;线下&#xff09;4、网上提交1-起诉书样例2-起诉书编写&#xff08;1&#xff09;原告信息&#xff1a;&…

如何将MySQL卸载干净(win11)

相信点进来的你肯定是遇到了这个问题&#xff0c;那就是在安装MySQL的时候操作错误&#xff0c;最后结果不是自己想要的。卸载重新安装又发现安装不了。其实最主要的原因就是没有将MySQL卸载干净&#xff0c;那么如何把MySQL卸载干净&#xff1f;下面本篇文章就来给大家一步步介…

sensitive-word 敏感词 v0.20.0 数字全部匹配,而不是部分匹配

敏感词系列 sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word-admin v1.3.0 发布 如何支持分布式部署&#xff1f; 01-开源敏感词工具入门使用 02-如何实现一个敏感词工具&#xff1f;违禁词实现思路梳理 03-敏感词之 StopWord 停止词优化与特殊符号 04-…

Matlab进行频率切片小波变换

Matlab进行频率切片小波变换(FSWT)源代码&#xff0c;将一维信号生成时频图。 输入信号可以是任何一维信号&#xff0c;心电信号、脑电信号、地震波形、电流电压数据等。 相比连续小波变换(CWT)&#xff0c;频率切片小波变换(Frequency Slice Wavelet Transform,FSWT)是一种更具…

计算机毕业设计hadoop+spark知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习

《HadoopSpark知网文献论文推荐系统》开题报告 一、研究背景及意义 随着互联网技术的迅猛发展和大数据时代的到来&#xff0c;学术文献的数量呈爆炸式增长&#xff0c;用户面临着严重的信息过载问题。如何高效地从海量文献中筛选出用户感兴趣的论文&#xff0c;成为当前学术界…

涛思数据库安装和卸载

安装 cd opt/taos/TDengine-server-2.4.0.5 sudo ./install.sh 启动taos​ 安装后&#xff0c;请使用 systemctl 命令来启动 TDengine 的服务进程 systemctl start taosd检查服务是否正常工作&#xff1a; systemctl status taosd 升级 3.0 版在之前版本的基础上&#x…

Parasoft助力Joby Aviation符合DO-178B标准

Joby Aviation&#xff0c;这家成立于2009年的美国高科技企业&#xff0c;以其对电动垂直起降&#xff08;eVTOL&#xff09;技术的深刻洞察与不懈追求&#xff0c;正引领着全球空中出行领域的革新。作为该领域的先驱者&#xff0c;Joby Aviation专注于研发并商业化运营其革命性…

蓝桥杯嵌入式客观题合集

十四届模拟赛二客观题 解析&#xff1a;STM32微控制器的I/O端口寄存器必须按32位字被访问 解析&#xff1a;微分电路能将三角波转换为方波&#xff1b;积分电路能将方波转换为三角波 解析&#xff1a;放大电路的本质是能量的控制与转换 解析&#xff1a;具有n个节点&#xff0c…

Ansible——Playbook基本功能???

文章目录 一、Ansible Playbook介绍1、Playbook的简单组成1&#xff09;“play”2&#xff09;“task”3&#xff09;“playbook” 2、Playbook与ad-hoc简单对比区别联系 3、YAML文件语法&#xff1a;---以及多个---&#xff1f;&#xff1f;使用 include 指令 1. 基本结构2. 数…

Java入门:09.Java中三大特性(封装、继承、多态)02

2 继承 需要两个类才能实现继承的效果。 比如&#xff1a;类A 继承 类B A类 称为 子类 &#xff0c; 衍生类&#xff0c;派生类 B类 称为 父类&#xff0c;基类&#xff0c;超类 继承的作用 子类自动的拥有父类的所有属性和方法 &#xff08;父类编写&#xff0c;子类不需要…

IDEA开发HelloWorld程序

IDEA管理Java程序的结构 project&#xff08;项目、工程&#xff09;---project中可以创建多个modulemodule&#xff08;模块&#xff09;---module中可以创建多个packagepackage&#xff08;包&#xff09;---package中可以创建多个classclass&#xff08;类&#xff09;---c…

光控资本:股市黑色星期一是什么意思?黑色星期五什么意思?

股市黑色星期一是指股市大跌经常出现在星期一的现象。 最著名的黑色星期一便是1987年10月19日&#xff08;星期一&#xff09;产生的全球股市暴降工作&#xff0c;当日全球股市在纽约道琼斯公司工业均匀指数带头暴降下全面下泻&#xff0c; 引发金融商场惊惧&#xff0c; 以及…

python 爬虫 selenium 笔记

todo 阅读并熟悉 Xpath, 这个与 Selenium 密切相关、 selenium selenium 加入无图模式&#xff0c;速度快很多。 from selenium import webdriver from selenium.webdriver.chrome.options import Options# selenium 无图模式&#xff0c;速度快很多。 option Options() o…

2024 go-zero社交项目实战

背景 一位商业大亨&#xff0c;他非常看好国内的社交产品赛道&#xff0c;想要造一款属于的社交产品&#xff0c;于是他找到了负责软件研发的小明。 小明跟张三一拍即合&#xff0c;小明决定跟张三大干一番。 社交产品MVP版本需求 MVP指&#xff1a;Minimum Viable Product&…

【C语言二级考试】循环结构设计

C语言二级考试——循环结构程序设计 五.循环结构程序设计 1.for循环结构 2.while和do-while循环结构 3.continue语句和break语句 4.循环的嵌套 知识点参考【C语言】循环-CSDN博客 文章目录 1.for循环2.while和do-while循环结构3.continue语句和break语句4.循环的嵌套 1.for循环…

阿里云容器服务Kubernetes部署新服务

这里部署的是前端项目 1.登录控制台-选择集群 2.选择无状态-命名空间-使用镜像创建 3.填写相关信息 应用基本信息&#xff1a; 容器配置&#xff1a; 高级配置&#xff1a; 创建成功后就可以通过30006端口访问项目了

【测向定位】差频MUSIC算法DOA估计【附MATLAB代码】

​微信公众号&#xff1a;EW Frontier QQ交流群&#xff1a;554073254 摘要 利用多频处理方法&#xff0c;在不产生空间混叠的情况下&#xff0c;估计出高频区域平面波的波达方向。该方法利用了差频&#xff08;DF&#xff09;&#xff0c;即两个高频之间的差。这使得能够在可…

视觉语言大模型模型介绍-CLIP学习

多模态学习领域通过结合图像和文本信息&#xff0c;为各种视觉语言任务提供了强大的支持。图像和文本的结合在人工智能领域具有重要的意义&#xff0c;它使得机器能够更全面地理解人类的交流方式。通过这种结合&#xff0c;模型能够处理包括图像描述、视觉问答、特征提取和图像…

多线程---线程的状态及常用方法

1. 线程的状态 在Java程序中&#xff0c;一个线程对象通过调用start()方法启动线程&#xff0c;并且在线程获取CPU时&#xff0c;自动执行run()方法。run()方法执行完毕&#xff0c;代表线程的生命周期结束。 在整个线程的生命周期中&#xff0c;线程的状态有以下六种&#xff…