Mybatis Mapper XML文件-查询(select)

MyBatis真正的力量在于映射语句(Mapped Statements)。这是魔力发生的地方。尽管拥有强大的功能,Mapper XML文件相对来说比较简单。如果将其与等效的JDBC代码进行比较,您会立即看到代码减少了95%。MyBatis专注于SQL的编写,并尽最大努力不干扰您的方式。

Mapper XML文件仅有几个一级元素(按照定义的顺序):

  • cache – 针对给定命名空间的缓存配置。
  • cache-ref – 从另一个命名空间引用缓存配置。
  • resultMap – 最复杂和强大的元素,描述如何从数据库结果集加载对象。
  • sql – 可以被其他语句引用的可重用SQL代码片段。
  • insert – 映射的INSERT语句。
  • update – 映射的UPDATE语句。
  • delete – 映射的DELETE语句。
  • select – 映射的SELECT语句。
 select

在MyBatis中,select语句是最常用的元素之一。将数据存入数据库并不是非常有价值,直到你将其取回才变得有意义,因此大多数应用程序进行的操作更多是查询而不是修改数据。对于每个插入、更新或删除操作,可能会有很多查询操作。这是MyBatis的一个基本原则,也是为什么在查询和结果映射方面付出了如此多的关注和努力的原因。对于简单的情况,select元素非常简单。例如:

<select id="selectPerson" parameterType="int" resultType="hashmap">SELECT * FROM PERSON WHERE ID = #{id}
</select>

 这个语句被称为selectPerson,接受一个类型为int(或Integer)的参数,并返回一个以列名为键,行值为值的HashMap。

请注意参数表示方式:

#{id}

这告诉MyBatis要创建一个PreparedStatement参数。在JDBC中,这样的参数会被一个“?”来表示,在传递给新的PreparedStatement的SQL中会是这样的形式:

// Similar JDBC code, NOT MyBatis…
String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
PreparedStatement ps = conn.prepareStatement(selectPerson);
ps.setInt(1,id);

当然,仅使用JDBC需要更多的代码来提取结果并将其映射到对象的实例中,而这正是MyBatis帮助您避免做的。

select元素还有更多的属性,允许您配置每个语句的详细行为。

<selectid="selectPerson"parameterType="int"parameterMap="deprecated"resultType="hashmap"resultMap="personResultMap"flushCache="false"useCache="true"timeout="10"fetchSize="256"statementType="PREPARED"resultSetType="FORWARD_ONLY">
Attribute(属性)Description(描述)
id在这个命名空间中的一个唯一标识符,可以用来引用这个语句。
parameterType完全限定的类名或参数的别名,将传递给这个语句。这个属性是可选的,因为MyBatis可以通过实际传递给语句的参数来计算要使用的TypeHandler。默认是未设置的。
parameterMap这是一种已过时的引用外部参数映射的方法。请使用内联参数映射和parameterType属性。
resultType这是期望从该语句返回的结果类型的完全限定类名或别名。请注意,在集合的情况下,应该是集合所包含的类型,而不是集合本身的类型。使用resultType或resultMap,而不要同时使用两者。
resultMap对外部resultMap的命名引用。结果映射是MyBatis最强大的特性,通过对其进行良好理解,可以解决许多复杂的映射情况。使用resultMap或resultType,而不要同时使用两者。
flushCache将此设置为true将导致在每次调用该语句时刷新本地缓存和二级缓存。对于select语句,默认值为false。
useCache将此设置为true将导致该语句的结果被缓存在二级缓存中。对于select语句,默认值为true。
timeout这个属性设置驱动程序在请求后等待数据库返回的时间,超过该时间将抛出异常。默认值是未设置的(依赖于驱动程序)。
fetchSize这是一个驱动程序提示,它会尝试使驱动程序以指定大小的行批量返回结果。默认值是未设置的(依赖于驱动程序)。
statementType可以选择其中的一个:STATEMENT、PREPARED或CALLABLE。这会让MyBatis分别使用Statement、PreparedStatement或CallableStatement。默认值为PREPARED。
resultSetType可以选择其中之一:FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE或DEFAULT(与未设置相同)。默认值为unset(依赖于驱动程序)。
databaseId如果配置了databaseIdProvider,MyBatis将加载所有没有databaseId属性或者其databaseId与当前数据库Id匹配的语句。如果发现相同的语句既有databaseId,又没有databaseId,后者将被丢弃。
resultOrdered这仅适用于嵌套的结果选择语句:如果设置为true,则假定嵌套结果被包含或分组在一起,以便当返回新的主结果行时,不会再出现对以前结果行的引用。这样可以使嵌套结果填充更加友好地使用内存。默认值为false。
resultSets这仅适用于多个结果集。它列出了语句将返回的结果集,并为每个结果集提供一个名称。名称之间用逗号分隔。
affectData当编写返回数据的INSERT、UPDATE或DELETE语句时,将其设置为true,以便正确控制事务。还可参见事务控制方法。默认值为false(自3.5.12版起)。

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

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

相关文章

SVN客户端部署-win7操作系统

SVN客户端官网&#xff1a;https://tortoisesvn.net/downloads.zh.html 按照操作系统选择&#xff0c;我的是64位&#xff0c;双击运行 下一步&#xff08;next&#xff09; 下一步 点击x处&#xff0c;总共4个选项&#xff0c;修改安装路径 will be installed on local hard …

Linux id命令教程:如何有效地获取用户和组信息(附案例详解和注意事项)

Linux id命令介绍 id命令是Linux中的一个内置命令&#xff0c;用于显示特定用户或当前用户的用户和组信息。这个命令可以帮助你找到用户ID (UID)&#xff0c;组ID (GID)&#xff0c;以及用户所属的所有组。 Linux id命令适用的Linux版本 id命令在所有主流的Linux发行版中都是…

PHP函数里面写JQ CSS HTML的写法案例

/*** description: 返回顶部* param {*}* return {*}*/public function gotop() {global $_L, $COMCFG;$plugin $COMCFG[plugin][gotop] ?: [];$plugin array_merge(["right" > 30,"bottom" > 80,"color" > "rgba(255, 25…

【qt信号槽-5】信号槽相关注意事项记录

背景&#xff1a; 信号槽是qt很重要的概念&#xff0c;遇到问题帮助没少看。其中就有signals and slots这一章节&#xff0c;说得很到位。 概念琐碎&#xff0c;记录备忘。不对之处望指正。 【qt信号槽-1】槽函数重写问题&#xff0c;qt_metacall和qt_static_metacall-CSDN博…

动力电池系统介绍(十四)——热管理系统

动力电池系统介绍&#xff08;十四&#xff09; 一、梗概二、座舱热管理&#xff08;汽车空调&#xff09;2.1 空调制冷2.2 空调制热2.2.1 传统燃油汽车空调制热2.2.2 新能源汽车空调制热 三、动力系统热管理3.1 燃油车发动机热管理3.1.1 冷却系统3.1.2 润滑系统3.1.3 进排气系…

【QT】Model/View结构

目录 1 概述 2 Mode/View基本原理 3 数据模型 4 视图组件 5 代理 6 Model/View结构的一些概念 6.1 Model/View的基本结构 6.2 模型索引 6.3 行号和列号 6.4 父项 6.5 项的角色 1 概述 Model/View&#xff08;模型/视图&#xff09;结构是Qt中用界面组件显示与编辑数据的一种结构…

算法基础之筛质数

筛质数 核心思想&#xff1a;筛法求质数 埃氏筛法: 每次用 2 3 4…. p-1 筛 2 - p之间的数出现2 3 4 …的倍数时 去掉(4实际已经被去掉 不会用4去筛)当2~p-1的数都没有筛掉p 说明p是质数 优化: 只用2~p-1中质数筛 线性筛法: 核心: n只会被其最小质因子筛掉 每一个合数都只…

MFC 消息映射机制

目录 消息映射机制概述 宏展开 宏展开的作用 消息映射机制的执行流程 消息处理 消息映射机制概述 MFC的消息映射映射机制是可以在不重写WindowProc虚函数的大前提下&#xff0c;仍然可以处理消息。 类必须具备的要件 类内必须添加声明宏 DECLARE_MESSAGE_MAP() 类外…

linux 应用开发笔记---【线程】

1.概念&#xff1a; 线程是参与系统调度的最小单位&#xff0c;它被包含在进程中&#xff0c;是进程的实际运行单位 一个进程可以创建多个线程&#xff0c;多个线程并发运行&#xff0c;每个线程执行不同的任务 2.如何创建线程 当一个程序启动的时候&#xff0c;一个进程被…

Cesium 3DTiles数据格式详解

目录 0 引言1 3DTiles1.1 起源1.2 后缀类型及特点1.2.1 b3dm1.2.2 i3dm1.2.3 pnts1.2.4 cmpt1.2.5 json1.2.6 总结 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;CesiumforUnreal专栏&#x1f4a5; 标题&#xff1a;Cesium 3DTiles数据格式详解❣…

【Netty】Netty核心API及使用

目录 Netty核心APIChannelHandler及其实现类ChannelPipelineChannelHandlerContextChannelOptionChannelFutureEventLoopGroup和实现类NioEventLoopGroupServerBootstrap和BootstrapUnpooled类 Netty入门案例引入依赖Netty服务端编写Netty客户端编写 Netty核心API ChannelHand…

第二十一章 : Spring Boot 集成RabbitMQ(五)

第二十一章 : Spring Boot 集成RabbitMQ(五) 前言 本章知识点: 如何保证消息100%可靠性发送的技术解决方案。 Springboot 版本 2.3.2.RELEASE ,RabbitMQ 3.9.11,Erlang 24.2一、 应用场景 在使用消息队列时,因为生产者和消费者不直接交互,所以面临下面几个问题: 1…

智能优化算法应用:基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.龙格-库塔算法4.实验参数设定5.算法结果…

FPGA模块——以太网芯片MDIO读写

FPGA模块——以太网MDIO读写 MDIO接口介绍MDIO接口代码&#xff08;1&#xff09;MDIO接口驱动代码&#xff08;2&#xff09;使用MDIO驱动的代码 MDIO接口介绍 MDIO是串行管理接口。MAC 和 PHY 芯片有一个配置接口&#xff0c;即 MDIO 接口&#xff0c;可以配置 PHY 芯片的工…

读书笔记产品经理学习笔记1-忘掉技术,先看客户需求

技术到产品思维的转换 以前做技术的时候&#xff0c;扮演的角色是怎样多快好省的完成开发。现在做产品了&#xff0c;你得自己定产品方案&#xff0c;让别人来开发。最重要的是先弄清楚客户的需求是什么&#xff0c;要解决什么问题&#xff0c;再看产品怎么设计&#xff0c;然…

你想改win11系统中窗口、菜单等的字体? 微软不想让你改

如果你感觉win11系统中显示的字体不好看&#xff0c;想换。等一等&#xff0c;微软本不想让你改。 Windows 11 在默认情况下并没有提供直接修改系统默认字体的选项&#xff0c;而需要进行注册表或其他高级设置来更改系统字体。这可能是因为微软希望保持系统的一致性和稳定性&a…

[Realtek sdk-3.4.14b]RTL8197FH-VG+RTL8812F WiFi使用功率限制功能使用说明

sdk说明 ** Gateway/AP firmware v3.4.14b – Aug 26, 2019**  Wireless LAN driver changes as:  Refine WiFi Stability and Performance  Add 8812F MU-MIMO  Add 97G/8812F multiple mac-clone  Add 97G 2T3R antenna diversity  Fix 97G/8812F/8814B MP issu…

leetcode15. 三数之和

题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组…

可狱可囚的爬虫系列课程 07:BeautifulSoup4(bs4)库的使用

前面一直在讲 Requests 模块如何使用&#xff0c;那都是在请求阶段要做的事情&#xff0c;相信很多网友都在等一个能够开始爬网站信息的教程&#xff0c;今天它来了&#xff0c;今天我要给大家讲一个很简单易懂的库&#xff1a;BeautifulSoup4。 一、概述&安装 Beautiful…

KylinV10 安装 MySQL 教程(可防踩雷)

KylinV10 安装 MySQL 教程&#xff08;可防踩雷&#xff09; 1、直接用 apt 快捷安装 MySQL $ sudo apt-get update #更新软件源 $ sudo apt-get install mysql-server #安装mysql然后你会发现&#xff0c;KylinV10 安装畅通无阻&#xff0c;并没有设置密码的场景&#xff0c…