Java练习题1

1.什么是MyBatis?

MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,使用简单的XML或注解进行配置和原始映射,将接口和Java的POJO映射成数据库中的记录,使得Java开发人员可以使用面向对象的编程思想来操作数据库。

2.MyBatis的工作原理

(1)读取MyBatis配置文件mybatis-config.xml。

(2)由MyBatis配置文件加载映射文件Mapper.xml。

(3)通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory。

(4)由会话工厂创建SqlSession对象。

(5)MyBatis底层定义了一个Executor接口来操作数据库,它会根据SqlSession传递的参数动态的生成需要执行的SQL语句。

(6)在Executor接口的执行方法中,包含一个MappedStatement类型的参数,该参数是对映射信息的封装。

(7)在执行方法时,MappedStatement对象会对用户执行SQL语句的输入参数进行定义封装。

(8)在数据库中执行完SQL语句后,MappedStatement对象会对SQL执行输出的结果进行定义封装。

3.<mappers>元素引入映射文件的4种方式。

(1)使用类路径引入。

(2)使用本地文件路径引入。

(3)使用接口类引入。

(4)使用包名引入。

4.MyBatis映射文件中的常用元素及其作用。

<mapper>:映射文件的根元素,该元素只有一个namespace属性(命名空间),namespace属性作用如下。

(1)用于区分不同的mapper,全局唯一。

(2)绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的全限定名查找到对应的mapper配置来执行SQL语句,因此namespace的命名必须跟接口同名。

<cache>: 配置给定命名空间的缓存。

<cache-ref>:从其他命名空间引用缓存配置。

<resultMap>:描述数据库结果集和对象的对应关系。

<sql>:可以重用的SQL块,也可以被其他语句使用。

<insert>:用于映射插入语句。

<delete>:用于映射删除语句。

<update>:用于映射更新语句。

<select>:用于映射查询语句。

5.MyBatis动态SQL中的常用元素及其作用。

<if>:判断语句,用于单条件判断。

<choose>(<when>、<otherwise>):相当于Java中的switch...case...default语句,用于多条件判断。

<where>:简化SQL语句中where的条件判断。

<trim>:可以灵活地去除多余的关键字。

<set>:用于SQL语句的动态更新。

<foreach>:循环语句,常用于in语句等列举条件中。

6.在使用<foreach>时,collection属性需要注意的几点。

(1)如果传入的是单参数且参数类型是一个数组或者List的时候,collection属性值分别为array和list(或collection);

(2)如果传入的参数是多个的时候,就需要把它们封装成一个Map了,当然单参数也可以封装成Map集合,这时候collection属性值就为Map的键。

(3)如果传入的参数是POJO包装类的时候,collection属性值就为该包装类中需要进行遍历的数组或集合的属性名。

7.<collection>子元素的常用属性及其作用。

property:指定映射到的实体类对象属性,与表字段一一对应;

column:指定表中对应的字段;

ofType:它用于指定实体对象中集合类属性所包含的元素类型;

select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询;

fetchType:指定在关联查询时是否启用延迟加载。fetchType属性有lazy和eager两个属性值,默认值为lazy(即默认关联映射延迟加载)。

8.MyBatis关联查询映射的两种处理方式。

MyBatis在映射文件中加载关联关系对象主要通过嵌套查询和嵌套结果两种方式。

嵌套查询是指通过执行另外一条SQL映射语句来返回预期的复杂类型;

嵌套结果是使用嵌套结果映射来处理重复的联合结果的子集。

9.MyBatis的常用注解及其作用。

@Select:用于映射查询语句,其作用等同于xml配置文件中的<select>元素。

@Insert:用于映射插入语句,其作用等同于xml配置文件中的<insert>元素。

@Update:用于映射更新语句,其作用等同于xml配置文件中的<update>元素。

@Delete:用于映射删除语句,其作用等同于xml配置文件中的<delete>元素。@Param:用于指定SQL语句中的参数,通常用于SQL语句中参数比较多的情况。

@One:用于实现数据表的一对一关联查询,其作用等同于xml配置文件中的<assocation>元素。

@Many:用于实现数据表的一对多关联查询,@Many注解的作用等同于xml配置文件中的<collection>元素。

@Results:用于映射查询结果。

@Result:用于完成实体类中属性和数据表中字段的映射。

10.@Result注解中的常用属性及其作用。

property:用于指定关联属性。

column:用于指定关联的数据库表中的字段。

one:用于一对一配置的关联查询。

many:用于一对多配置的关联查询。

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

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

相关文章

快速自定义表单开发受欢迎的几个优势

为了满足业务需求&#xff0c;低代码技术平台带着更理想的优势特点&#xff0c;广泛用于各中大型企业中&#xff0c;是助力企业实现提质增效、提升开发效率的有力武器。那么&#xff0c;您知道快速自定义表单开发的优势体现在哪里吗&#xff1f;为了帮助大家了解这些详情&#…

路由框架 ARouter 原理及源码解析

文章目录 前言一、ARouter 简介二、ARouter 使用1.添加依赖和配置2.添加注解3.初始化SDK4.发起路由操作 三、ARouter 成员1. PostCard 明信片2. Interceptor 拦截器3. Warehouse 路由仓库4. ARouter 注解处理 四、ARouter 原理五、ARouter 源码分析1. ARouter 初始化1.1 ARoute…

基于SSM的足球联赛管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

go语言int64转字符串类型

在 Go 语言中&#xff0c;将 int64 类型转换为字符串类型通常使用 fmt.Sprintf 函数或者 strconv 包中的 strconv.Itoa64 和 strconv.AppendInt 方法。下面是两种常见的方法&#xff1a; 1. 使用 fmt.Sprintf&#xff1a; go package main import "fmt" func main…

分布式系列之限流组件

概述 在高并发场景下&#xff0c;请求量瞬间到达&#xff0c;后端服务器即使有缓存、集群主备、分库分表、容错降级等措施&#xff0c;也有可能扛不住这请求量&#xff0c;因此可考虑引入限流组件。限流的目的&#xff1a;防止恶意请求流量或流量超出系统承载。 应用场景&…

【Java核心技术9】Java控制流语句详解:if、switch、for、while

引言 控制流语句是编程语言中不可或缺的一部分&#xff0c;它们决定了程序的执行路径&#xff0c;使程序能够根据不同的条件执行不同的代码块。在Java中&#xff0c;主要的控制流语句包括if、switch、for、while和do…while。 本文将通过实际代码示例&#xff0c;详细介绍这些…

计算机毕业设计师hadoop+spark+hive知识图谱医生推荐系统 医生数据分析可视化大屏 医生爬虫 医疗可视化 医生大数据 机器学习 大数据毕业设计

流程&#xff1a; 1.Python爬虫采集中华健康网约10万医生数据&#xff0c;最终存入mysql数据库&#xff1b; 2.使用pandasnumpy/hadoopmapreduce对mysql中的医生数据进行数据分析&#xff0c;使用高德地图解析地理位置&#xff0c;并将结果转入.csv文件同时上传到hdfs文件系统&…

百度文心智能体平台(想象即现实):轻松上手,开启智能新时代!创建属于自己的智能体应用。

目录 1.1、文心智能体平台 1.2、创建智能体 1.3、智能体报名入口 1.4、古诗词小助手 1.5、访问我的智能体 我的智能体访问地址&#xff1a;https://mbd.baidu.com/ma/s/7u8kBFYA。 在这个全新的时代里&#xff0c;人工智能技术正以前所未有的速度发展&#xff0c;渗透到我…

办公室的奢华程度与公司管理层回报股东的意愿成反比?

在《战胜华尔街》的第四章&#xff0c;林奇又给出了一条选股法则“公司办公室的奢华程度与公司管理层回报股东的意愿成反比”。实际上&#xff0c;林奇在《战胜华尔街》中给出了很多奇奇怪怪的林奇法则&#xff0c;很多法则我实在看不出来跟投资有什么关系&#xff0c;比如“如…

LinkedHashMap详解

目录 LinkedHashMap详解1、LinkedHashMap的继承体系2、LinkedHashMap的特性介绍和代码示例①、特性②、适用场景使用LinkedHashMap 实现最简单的 LRU缓存 3、LinkedHashMap的构造函数4、LinkedHashMap是如何存储元素的&#xff0c;底层数据结构是什么&#xff1f;LinkedHashMap…

学习前台开发主要掌握的技能

学习前端开发需要掌握一系列的技能&#xff0c;这些技能大致可以分为以下几个类别&#xff1a;基础技术、前端框架和库、开发工具和环境、版本控制、性能优化和最佳实践。以下是详细的技能清单&#xff1a; 基础技术 1.HTML&#xff08;超文本标记语言&#xff09; HTML5的新…

C++: version `GLIBCXX_3.4.29‘ not found

最近遇到一个错误,在一个机器上编译sockperf,但是运行的时候出现错误: # ./sockperf ./sockperf: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29 not found (required by ./sockperf)[root@RH8

用LoRA微调 Llama 2:定制大型语言模型进行问答

Fine-tune Llama 2 with LoRA: Customizing a large language model for question-answering — ROCm Blogs (amd.com) 在这篇博客中&#xff0c;我们将展示如何在AMD GPU上使用ROCm对Llama 2进行微调。我们采用了低秩适配大型语言模型(LoRA)来克服内存和计算限制&#xff0c;…

SAP赋能食品行业,确保安全与品质的双重飞跃

品安全与品质是消费者最关心的问题&#xff0c;也是食品企业的生命线。随着科技的发展和消费者需求的日益多样化&#xff0c;食品行业正面临着前所未有的挑战和机遇。SAP作为全球领先的企业资源规划&#xff08;ERP&#xff09;系统&#xff0c;为食品行业提供了全面的解决方案…

RealityCheck™电机监测和预测性维护模型

RealityCheck™电机 一个附加的软件工具箱&#xff0c;可实现条件监测和预测性维护功能&#xff0c;而无需依赖额外的传感器。相反&#xff0c;它使用来自电机控制过程的电子信息作为振动和其他传感器的代理。凭借其先进的信号处理和机器学习(ML)模型&#xff0c;RealityCheck …

惠普8596E频谱分析仪

8590E系列频谱分析仪具有各种各样的性能、功能&#xff0c;其价格亦是为适应用户的承受能力而确定的。用户可以从价格低廉、具有基本性能的分析仪直至高性能分析仪中进行挑选&#xff0c;无论选择哪种分析仪&#xff0c;都会感受到8590系列频谱分析仪便于使用且高度可靠。这些仪…

js获取年月日时分秒及星期几

最近发现好像写这种基础博客的很少&#xff0c;文章大部分都是几年前的&#xff0c;之前对于时间这块都是直接使用day.js 来处理&#xff0c;废话不多说&#xff0c;直接进入正题 const now new Date();//初始值 now.getFullYear()//年 now.getMonth() 1 //月 now.getDate()…

Palo Alto GlobalProtect App 6.3 (macOS, Linux, Windows, Andriod) - 端点网络安全客户端

Palo Alto GlobalProtect App 6.3 (macOS, Linux, Windows, Andriod) - 端点网络安全客户端 Palo Alto Networks 远程访问 VPN 客户端软件 请访问原文链接&#xff1a;https://sysin.org/blog/globalprotect-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。…

呼叫中心许可证如何续证?

我们知道自从2019年下半年&#xff0c;工信部开始整治营销骚扰电话&#xff0c;呼叫中心许可证开始政策严控&#xff0c;虽未出台暂停审批的文件&#xff0c;但实际从2019年10月左右就暂停审批发新证包括续证。 2020年下半年逐步放开&#xff0c;但审核极其严格&#xff0c;20…