【基于轻量型架构的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_ONLY
,SCROLL_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
和MANAGED
。JDBC
指的是 MyBatis 自己管理事务,而MANAGED
则由容器(如 Spring)来管理事务。
二、配置文件和映射文件
配置文件
- <configuration>:根元素,可以包含多个子元素,如
<environments>
,<mappers>
等。子元素的顺序在配置中很重要,因为它们定义了 MyBatis 的行为。
映射文件
- <select>:用于映射查询语句,可以配置多个
<select>
元素在同一个映射文件中。 - <insert>:用于映射插入语句,可以设置
useGeneratedKeys
属性来获取数据库自动生成的主键。 - <update> 和 <delete>:用于映射更新和删除语句,执行后返回影响的记录数。
元素属性
- resultMap:表示外部 resultMap 的命名引用,但不能与
resultType
同时使用。 - parameterType:表示传入 SQL 语句的参数类的全限定名或别名。
- resultSetType:用于
<select>
元素中,表示结果集的类型。
三、映射文件的高级特性
- <sql> 元素:用于定义可重用的 SQL 片段,可以包含在其他 SQL 语句中。
四、知识点速记
单选题
- 关于
<select>
元素:不能同时使用resultType
和resultMap
。 - <properties> 元素:不直接实现静态参数配置,而是通过引用外部文件实现。
- 为 POJO 实体类设置别名:使用
<typeAliases>
元素。 - SqlSession 查询方法返回类型:通常返回泛型对象的
List
集合。 - <environments> 元素的子元素:不包括
<plugins>
。 - <insert> 元素的属性:
keyColumn
用于指定哪一列是自动生成的主键。 - 引入映射文件:使用
<mappers><mapper resource="路径"/></mappers>
。 - 结果集类型:使用
resultSetType
属性指定。 - <mapper> 元素:是映射文件的根元素。
- <sql> 元素的使用:使用
${alias}
插入参数值。
判断题
- SqlSessionFactory 对象:线程安全,在整个应用程序执行期间存在。
- openSession() 方法:参数默认值依赖于具体实现。
- <configuration> 子元素顺序:必须按照指定顺序配置。
- SqlSession 对象:线程不安全,每个线程应有自己的实例。
- 影响记录条数:
<insert>
,<update>
,<delete>
元素执行后返回影响的记录数。
填空题
- 事务管理器类型:
JDBC
和MANAGED
。 - 数据源类型:
UNPOOLED
,POOLED
,JNDI
。 - 结果映射集元素:
<resultMap>
。 - SqlSession 创建者:
SqlSessionFactory
。 - SqlSessionFactory 对象构建模式:建议使用单例模式。
相关文章:
【基于轻量型架构的WEB开发】【章节作业】
作业1 mybatis核心对象、配置文件和映射文件 一. 单选题(共10题,50分) 1. (单选题)以下关于<select>元素及其属性说法错误的是()。 A. <select>元素用来映射查询语句,它可以帮助我们从数据库中读取出数据,并组装数据给业务开发…...

一张图解析FastAdmin中的表格列表(bootstrap-table)的功能(备份)
功能描述 请根据图片上的数字索引查看对应功能说明。 1.菜单名称和描述 默认生成的CRUD是没有菜单名称和描述显示的,如果需要显示则可以修改权限管理->菜单规则,给对应菜单的添加上备注信息后即可显示,支持HTML 2.TAB过滤选项卡 在一键…...

【数据结构】假设二叉树采用二叉链表存储,编写一棵二又树中序遍历的非递归算法。
编程题: 假设二叉树采用二叉链表存储,编写一棵二又树中序遍历的非递归算法。 分析: 算法描述: 非递归中序遍历二叉树的算法使用栈来辅助实现。首先,从根节点开始,沿着左子树不断向下, 将每个节点压入栈中。当到达最左端节点后,开始出栈并访问节点,接着转向右子树,重…...

李宏毅结构化学习 02
文章目录 一、上篇博文复习二、Separable Case三、Non-separable Case四、Considering Errors五、Regularization六、Structured SVM七、Cutting Plane Algorithm for Structured SVM八、Multi-class and binary SVM九、Beyond Structured SVM 一、上篇博文复习 图中x表示输入的…...
Android AlertDialog圆角背景不生效的问题
一行解决: window?.setBackgroundDrawableResource(android.R.color.transparent) 原文件: /*** Created by Xinghai.Zhao* 自定义选择弹框*/ SuppressLint("InflateParams", "MissingInflatedId") class CustomDialog(context: Context?) : AlertDia…...
探讨基于AI技术的相亲交友系统设计与实现
摘要 随着人工智能技术的发展,相亲交友领域也开始引入AI技术来改善用户体验,提高匹配成功率。本文探讨了如何利用AI技术设计并实现一个智能化的相亲交友系统,该系统能够根据用户的行为数据和个人偏好,自动推荐合适的潜在伴侣。通…...

(2024.9.20)Endnote插入的参考文献字号太大怎么办?
1、序言 常常写论文的人都知道,插入参考文献时,格式调整到让人头大。Endnote的使用大大方便了我们的同时,也意味着我们要学习软件的使用方法。最近重新安装了一下Endnote,插入的文献字体大小就像抽风了一样。在还没有写完文章之前…...

DataGrip在Windows和MacOS平台上的快捷键
0. 背景信息 No.说明1测试DataGrip版本号 : 2024.2.2 1. Windows下快捷键 2. MacOS下快捷键...

CSS---序号使用css设置,counter-reset、counter-increment、content配合实现备注文案的序号展示
直接上代码,全代码copy即可使用! <template><div class"reminder"><span class"Bold_12_body" style"line-height: 8vw">温馨提示:</span><br /><div class"rule-container"…...
Liquor 表达式引擎基本使用
引入依赖 <dependency><groupId>org.noear</groupId><artifactId>liquor-eval</artifactId><version>1.2.7</version> </dependency>liquor 表达式引擎(ExpressionEvaluator)支持 java 所有的类型、及…...

AI美女屠版小红书火了,被当真人推流,颜值博主慌了
最近,微信群里有一条炸裂的聊天记录,传得沸沸扬扬。 聊天记录原主声称,自己通过flux文生图模型跑出AI美女照片,发在小红书上不仅没有被平台标为AI,还成功获得流量扶持。 随后,原主就附上了自己养的1327个小…...

本地搭建我的世界服务器(JAVA)简单记录
网上参考教程挺多的,踩了不少坑,简单记录一下,我做的是一个私人服务器,就是和朋友3、4个人玩。 笨蛋 MC 开服教程 先放一个比较系统和完整的教程,萌新可用,这个教程很详细,我只是记录一下自己的…...

哪个快?用300万个图斑测试ArcGIS Pro的成对叠加与经典叠加
点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 在使用ArcGIS Pro的过程中,很多朋友发现,Pro有个成对叠加工具集。很多…...

超详细!百分百安装成功pytorch,建议收藏
文章目录 一、Anaconda安装1.1下载anaconda1.2配置Anaconda环境1.3验证anaconda是否安装成功 二、查看电脑显卡三、更新显卡驱动3.1下载驱动3.2、查看显卡驱动版本 四、cuda安装4.1CUDA下载4.2CUDA环境配置4.3验证CUDA是否安装成功 五、安装pytorch4.1下载pytorch5.2验证pytorc…...

web基础—dvwa靶场(四)File Inclusion
File Inclusion(文件包含) 有些 web 应用程序允许用户指定直接文件流的输入,或允许用户将文件上载到服务器。稍后 web 应用程序访问 web 应用程序上下文中用户提供的输入。通过这样种操作,web 应用程序允许恶意文件执行。 如果选择要包含的文件是目标计…...

【Python】练习:控制语句(二)第1关
第1关:分支结构基础实训 第一题第二题第三题第四题(※)第五题(※)第六题第七题 第一题 #第一题 for temp in [-280, -100, 0, 20, 120, 200]:#请在下面编写代码# ********** Begin ********** #if temp>-273.15:F9/…...

Vue3 : Pinia的性质与作用
目录 一.性质 二.作用 三.Pinia 的核心概念 四.使用 1.count.ts 2.count.vue Vue 3 中 Pinia 是一个专为 Vue 3 设计的状态管理库,它旨在提供一种简单、直观的方式来管理应用的状态。 一.性质 1.集成性:Pinia 是 Vue 3 官方推荐的状态管理库&…...

对接金蝶云星空调用即时库存信息查询API
文章目录 前言准备工作获取第三方授权权限与授权配置信息集成金蝶云SDK调用实现备注前言 对于有自己商品信息管理后台并且使用金蝶ERP系统管理物料的商家来说,将金蝶上物料的库存信息同步到管理后台就可以不用去金蝶上确认库存了,可以大大简化管理后台的库存变更工作,这篇文…...
pretrain Llama3
导入模块:导入了一些必要的模块,包括数学计算、时间处理、文件操作、深度学习框架(如torch)、以及自定义的LLama Transformer模型相关内容。 I/O配置:定义了模型输出路径、评估与日志记录的间隔步数、批次大小、最大序…...

[附源码]SpringBoot+VUE+Java实现人脸识别系统
今天带来一款优秀的项目:java人脸识别系统源码 。 系统采用的流行的前后端分离结构,内含功能包括 “人脸数数据录入”,“人脸管理”,“摄像头识别” 如果您有任何问题,也请联系小编,小编是经验丰富的程序员…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...