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

news2024/9/23 20:17:34

作业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.coloradmin.cn/o/2158369.html

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

相关文章

共享打印机,局域网搜不到

如果共享打印机后&#xff0c;局域网内其余机器检索不到 1. 排查 是否启用来宾账户&#xff08;Guest&#xff09; 2. 网络和共享中心->更改高级共享设置->启用网络发现、启用文件和打印机共享、关闭密码保护共享 排查基本可以解决搜索不到打印机问题

Transformer动画讲解

**Transformer工作原理**** **一、**** ******GPT的核心是Transformer******** *GPT* &#xff1a; **GPT&#xff08;Generative Pre-trained Transformer&#xff09;**** ****是一种基于单向Transformer解码器的预训练语言模型&#xff0c;它通过在大规模语料库上的无监督…

MatrixOne 助力某电信运营商构建低成本高性能车联网管理系统

客户基本情况 该电信运营商在物联网领域深耕多年&#xff0c;致力于为企业和个人提供全面的物联网解决方案&#xff0c;包括智能连接、设备管理、数据采集与分析等核心服务。凭借其强大的网络覆盖和技术优势&#xff0c;该运营商为各行业提供高效、安全、可靠的物联网服务&…

风速传感器一文浅谈 了解自然的力量

产品概述 本产品主要采用优质聚合物碳纤维为原材料&#xff0c;具有良好的防腐、防侵蚀等特点&#xff0c;能够保证仪器长期使用不起锈&#xff0c;同时配合内部顺滑的轴承系统&#xff0c;确保了信息采集的准确性。外型小巧轻便&#xff0c;便于携带和组装&#xff0c;三杯设…

MCU和YT9218交换机通过RMII连接

1、可以通过带RMII的MCU和EXT1端口连接&#xff0c;将MCU配置为RMII 100M/全双工就可以通 2、原先在这里改SW配置&#xff0c; 一直不通 3、后来通过api调用可以通 这样改&#xff1a; 在初始化后&#xff0c;添加下面代码 //使能RMII&#xff0c;phy模式 #define Port5 …

【LeetCode】动态规划—使用最小花费爬楼梯(附完整Python/C++代码)

动态规划—#746. 使用最小花费爬楼梯 前言题目描述基本思路1. 问题定义:2. 理解问题和递推关系:3. 解决方法:4. 进一步优化:5. 小总结: 代码实现Python3代码实现Python 代码解释C代码实现C 代码解释 总结: 前言 在这个问题中&#xff0c;我们有一个数组 c o s t [ ] cost[] c…

单细胞SCENIC简单可视化分析学习和整理

SCENIC教程中给出三个方法进行下游的可视化分析&#xff0c;分别可以选择网页(SCope)平台&#xff0c;R或者python进行分析。 1、网页版&#xff1a;https://scope.aertslab.org/ 把数据从左侧工具栏处上传之后就可以个性化分析了~ 2、R和Python就殊途同归啦~ 笔者基于githu…

linux/CentOS 开机启动程序

前言 TencentOS Server 3.1 (TK4)适用于自己编写启动脚本的情况 编写启动脚本 比如启动tomcat&#xff0c;kaijiqidong_tomcat.sh #!/bin/bashecho "kaijiqidong_tomcat on date ." >> kaijiqidong_tomcat.log 2>&1cd /x/xx/xxx sh /x/tomcat/bin/s…

老照片修复软件有哪些?6个工具轻松搞定

在回忆的长廊中&#xff0c;老照片承载着岁月的痕迹和珍贵的记忆。 然而&#xff0c;时间的流逝往往让这些宝贵的瞬间变得模糊不清。幸运的是&#xff0c;现代科技赋予了我们修复这些老照片的能力。 面对市场上众多的老照片自动修复软件&#xff0c;选择一个合适的工具变得尤…

Apache APISIX学习(1):介绍、docker启动

一、介绍 Apache APISIX 是一个动态、实时、高性能的 API 网关&#xff0c; 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。你可以把 Apache APISIX 当做流量入口&#xff0c;来处理所有的业务数据&#xff0c;包括动态路由、动态上游…

得物自建 Redis 无人值守资源均衡调度设计与实现

目录&#xff1a; 一、为什么要做资源均衡调度 二、为什么要做自动化资源均衡调度 三、如何合理选择迁移节点 四、如何保障迁移过程中可靠性1. 添加从节点2. 检查同步数据正常3. 执行主从切换4. 检查主从切换正常5. 删除待迁移节点6. 消息通知 五、迁移任务管理展示 六、总结 …

户用光伏项目难管理,到底该怎么办?

一、鹧鸪云光伏业务管理软件&#xff1a;一站式管理利器 鹧鸪云光伏业务管理软件&#xff0c;作为一款专为光伏行业量身定制的智能化管理工具&#xff0c;集成了项目管理、运维管理、数据分析、用户服务等多功能模块于一体&#xff0c;旨在通过数字化手段&#xff0c;实现户用…

Nature Genetics|三代测序微量建库技术:媲美WGBS的直接甲基化检测

DNA修饰和甲基化是理解基因调控机制的关键。以往&#xff0c;我们的经验表明&#xff0c;使用三代测序从未经扩增的长DNA模板中同时读取序列信息和碱基修饰&#xff0c;需要投入大量的DNA样本来构建文库。 今天&#xff0c;小编带大家看一篇2024年发表于《Nature Genetics》的…

【MAUI】FlexLayout

文章目录 概述属性方向和对齐方式DirectionWrapJustifyContentAlignItemsAlignContent 圣杯布局来源 概述 FlexLayout弹性布局&#xff0c;和前端的Flex弹性布局&#xff0c;几乎一样。FlexLayout是容器&#xff0c;可以定义Direction/主轴方向、Wrap/子元素在主轴方向上是否换…

Vue使用Vue Router路由:开发单页应用

1、路由基础 在单页 Web 应用中&#xff0c;整个项目只有一个 HTML 文件&#xff0c;不同视图&#xff08;组件的模块&#xff09;的内容都是在同一个页面中渲染的。当用户切换页面时&#xff0c;页面之前的跳转都是在浏览器端完成的&#xff0c;这时就需要使用前端路由。 路…

蒙古语有方言差异吗?

蒙古语存在方言差异&#xff0c;主要分为西部方言和东部方言两大类。西部方言&#xff0c;即蒙古方言或喀尔喀方言&#xff0c;主要在蒙古国使用&#xff0c;是该国的官方语言。东部方言&#xff0c;又称布里亚特方言或巴尔虎-布里亚特方言&#xff0c;主要在中国内蒙古自治区和…

deepin桌面版连接windows远程桌面

在Linux系统中&#xff0c;要登录到Windows系统&#xff0c;通常可以使用远程桌面协议(RDP)。你需要在Linux系统上安装RDP客户端。 使用如下命令安装rdp协议&#xff1a; sudo apt-get install xrdp 安装成功后&#xff0c;启动rdp服务。 sudo systemctl start xrdp 有了r…

vscode缩进 和自动格式化

如下图&#xff0c;缩进太大了。 检查2个地方 prettierrc.cjs文件。此处决定缩进几个tab vscode 的设置。 保存的时候 格式化。

Apache Druid命令执行(CVE-2021-25646)

漏洞详情&#xff1a; Apache Druid 是用Java编写的面向列的开源分布式数据存储系统&#xff0c;旨在快速获取大量事件数据&#xff0c;并在数据之上提供低延迟查询。 Apache Druid含有能够执行嵌入在各种类型请求中由用户提供的JavaScript代码功能。此功能适用于高度信任环境…

Java_Day04学习

类继承实例 package com.dx.test03; public class extendsTest {public static void main(String args[]) {// 实例化一个Cat对象&#xff0c;设置属性name和age&#xff0c;调用voice()和eat()方法&#xff0c;再打印出名字和年龄信息/********* begin *********/Cat cat ne…