NO.04 MyBatis的各种查询功能
目录
1、查询一个实体类对象
2、查询一个List集合
3、查询单个数据
5、查询多条数据并存储在Map集合中
5.1 方法一:将数据存储在map集合中,再将map集合存储在List集合中
5.2 方法二:将数据存储在map集合中
6、MyBatis中为Java中常用的类型设置了类型别名
在之前的博客中介绍了MyBatis实现了数据库基本的增删改查,博客中使用的实体类为User类,相关内容可查看博客:NO.2 MyBatis框架:创建Mapper接口和映射文件,实现基本增删改查_qq_46053741的博客-CSDN博客
对于MyBatis的查询功能,都需要指明查询结果的返回类型,通常使用resultType和resultMap属性指定结果类型。接下来介绍MyBatis的各种查询功能。
1、查询一个实体类对象
查询实体类对象,若参数为实体类的对象,则在查询语句中只需要使用${}和#{}访问实体类的属性名即可获得对应的属性值;若参数是Map集合,则在查询语句中使用${}和#{}访问Map集合的键即可获得对应的value值;若参数是一个字面量时,可以使用@Param注解的方式,通过${}和#{}访问形参获取形参的值。注意:使用${}获取属性值时,两边要加单引号,需要指定查询的结果返回类型。
例如:
使用@Param注解的方式获取形参的值,在mapper接口中声明getUserByUsername方法,如下
//根据用户名查询用户信息User getUserByUsername(@Param("username") String username);
在映射文件中实现Sql语句,使用resultType指明结果类型为User类型。
<!-- User getUserByUsername(@Param("username") String username)-->
<select id="getUserByUsername" resultType="User">select *from t_user where username=#{username}
</select>
2、查询一个List集合
查询多条数据时,不能使用实体类作为函数的返回值,要使用List集合作为方法的返回值,存储的类型为实体类类型(例如:List<User>),此时映射文件中查询结果类型为实体类型。
例如:
在Mapper接口中声明getAllUser方法,查询所有用户信息,将查询到的用户信息存储到List集合中返回。
//查询所用用户,并存储在List集合中
List<User> getAllUser();
在映射文件中实现Sql语句,使用resultType指定结果类型。
<!-- List<User> getAllUser();--><select id="getAllUser" resultType="User">select *from t_user</select>
3、查询单个数据
单个数据的查询主要用于查询数据的总条数,属于特殊值查询,此时resultType的结果类型指定为_integer。
例如:
在Maperr接口中声明getCount()方法。
//获取总记录数int getCount();
在映射文件中实现Sql语句,resultType的结果类型为_integer。
<!-- int getCount();--><select id="getCount" resultType="_integer">select count(*) from t_user</select>
4、查询一条数据为map集合
查询一条数据存储在Map集合中时,方法的返回值为Map,其中Map的键为String类型,值为Object类型。在映射文件中,结果类型指定为map类型。
例如:
在Mapper接口中声明getUserToMapByUsernameAndPassword(@Param("username") String username,@Param("password") String password)方法,将查询到的用户信息存储到Map集合中返回。
//根据用户名和密码查询用户信息为map集合Map<String,Object> getUserToMapByUsernameAndPassword(@Param("username") String username,@Param("password") String password);
在映射文件中实现Sql语句,结果类型指定为map
<!-- Map<String,Object> getUserToMapByUsernameAndPassword(@Param("username") String username,@Param("password") String password);--><select id="getUserToMapByUsernameAndPassword" resultType="map">select *from t_user where username=#{username} and password=#{password}</select>
5、查询多条数据并存储在Map集合中
将多条数据存储在Map集合中有两种实现方式。方式一:将数据先存储在Map集合中,再将Map存储在List集合中输出。方式二:直接将数据存储在Map集合中输出。
5.1 方法一:将数据存储在map集合中,再将map集合存储在List集合中
将表中的数据以Map集合的方式查询,一条数据对应一个Map;若有多条数据,就会产生多个Map集合,此时将这些Map放在一个List集合中获取。
例如:
在Mapper接口中实现getAllUserByMapAndList()方法,方法的返回类型为List<Map<String ,Object>>.
//方法一:List<Map<String,Object>> getAllUserByMapAndList();
在映射文件中实现Sql语句,resultType的结果类型为map
<!-- List<Map<String,Object>> getAllUserByMapAndList();--><select id="getAllUserByMapAndList" resultType="map">select *from t_user</select>
5.2 方法二:将数据存储在map集合中
将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,并且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对应的map集合
例如:
在Mapper接口中声明getAllUserToMap()方法,用@MapKey注解该方法,使用用户的id作为Map集合的键,用户信息作为Map的值。
//方法二@MapKey("id")Map<String,Object> getAllUserToMap();
在映射文件中实现Sql语句,resultType指定为map
<!-- Map<String,Object> getAllUserToMap();--><select id="getAllUserToMap" resultType="map">select *from t_user</select>
6、MyBatis中为Java中常用的类型设置了类型别名
对于实体类型resultType的结果类型通常指定为实体类类型,或在MyBatis的核心配置文件中通过typeAliases标签中的typeAlias标签的type属性指定实体类的路径,alias指定实体类的别名,或通过包设置类型别名,指定包下所有的类型将全部拥有默认的别名,即类名且不区分大小写(<package name="包的路径"/>)。
MyBatis自定义以下类的类型别名如下:
Integer:Integer,int
int:_int,_integer
Map:map
String:string
相关文章:
NO.04 MyBatis的各种查询功能
目录 1、查询一个实体类对象 2、查询一个List集合 3、查询单个数据 5、查询多条数据并存储在Map集合中 5.1 方法一:将数据存储在map集合中,再将map集合存储在List集合中 5.2 方法二:将数据存储在map集合中 6、MyBatis中为Java中常用的…...

Spring循环依赖
一、Autowired依赖注入的缓存 二、Resource依赖注入过程 三、循环依赖 singletonObjects:缓存经过了完整生命周期的beanearlySingletonObjects:缓存未经过完整生命周期的bean,如果某个bean出现了循环依赖,就会提前把这个暂时未经过…...
docker以distribution和registry管理个人镜像仓库
目录 一.distribution 1.扩展源下载docker-distribution并启动 2.打标签并认证安全仓库 3.推送到私人仓库 4.拉取镜像 二.registry 1.拉取registry的镜像 2.运行容器并打标签 3.认证安全仓库 4.推送到私人仓库 5.拉取镜像 一.distribution 1.扩展源下载docker-dist…...

2023京东酒类市场数据分析(京东数据开放平台)
根据鲸参谋平台的数据统计,今年7月份京东平台酒类环比集体下滑,接下来我们一起来看白酒、啤酒、葡萄酒的详情数据。 首先来看白酒市场。 鲸参谋数据显示,7月份京东平台白酒的销量为210万,环比下滑约49%;销售额将近19…...

Android中的APK打包与安全
aapt2命令行实现apk打包 apk文件结构 classes.dex:Dex,即Android Dalvik执行文件 AndroidManifest.xml:工程中AndroidManifest.xml编译后得到的二进制xml文件 META-INF:主要保存各个资源文件的SHA1 hash值,用于校验…...
HTTPS单向认证与双向认证
HTTPS单向认证与双向认证 HTTPSCA证书单向认证双向认证 HTTPS Https就是HTTPSSL/TSL的简称。 SSL(Secure Socket Layer 安全套接层)是TCP/IP协议中基于HTTP之下TCP之上的一个可选协议层。 起初HTTP在传输数据时使用的是明文,传输过程中并不安全。网景(N…...
(七) ElasticSearch 分词器
1.分词器 分词器是 Elasticsearch 用于将文本拆分为单词(词项)的组件,以便于搜索和索引。以下是一些关于 Elasticsearch 分词器的常见问题和相关操作的介绍: 1)什么是分词器? 分词器是 Elasticsearch 中…...

足球- EDA的历史数据分析并可视化
足球- EDA的历史数据分析并可视化 背景数据介绍探索数据时需要遵循的一些方向:数据处理导入库数据探索 数据可视化赛事分析主客场比分相关性分析时间序列分析 总结 背景 该数据集包括从1872年第一场正式比赛到2023年的44,341场国际足球比赛的结果。比赛范围从FIFA世…...

用正则处理Unicode 编码的文本
Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字进行了整理、编码。Unicode 使计算机呈现和处理文字变得简单。 现在的 Unicode 字符分为 17 组编排,每组为一个平面&…...

【分布式技术专题】「OSS中间件系列」从0到1的介绍一下开源对象存储MinIO技术架构
MinIO背景介绍 MinIO创始者是Anand Babu Periasamy, Harshavardhana(戒日王)等人, Anand是GlusterFS的初始开发者、Gluster公司的创始人与CTO,Harshavardhana曾经是GlusterFS的开发人员,直到2011年红帽收购了Gluster公…...

生成式人工智能的潜在有害影响与未来之路(三)
产品责任法的潜在适用 背景和风险 产品责任是整个二十世纪发展起来的一个法律领域,旨在应对大规模生产的产品可能对社会造成的伤害。这一法律领域侧重于三个主要危害:设计缺陷的产品、制造缺陷的产品和营销缺陷的产品。产品责任法的特点有两个要素&…...

【2023钉钉杯复赛】A题 智能手机用户监测数据分析 Python代码分析
【2023钉钉杯复赛】A题 智能手机用户监测数据分析 Python代码分析 1 题目 一、问题背景 近年来,随着智能手机的产生,发展到爆炸式的普及增长,不仅推动了中 国智能手机市场的发展和扩大,还快速的促进手机软件的开发。近年中国智能…...

Django(5)-视图函数和模板渲染
Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」 在我们的投票应用中,我们需要下列几个视图: 问题索引页——展示最近的几个投票问题。 问题详情页——展示某个投票的问题和不带结果的选项列表。 问题结果页——展示某个投票的结果。 投…...

Windows下 MySql通过拷贝data目录迁移数据库的方法
MySQL数据库的文件目录下图所示, 现举例说明通过COPY文件夹data下数据库文件,进行数据拷贝的步骤;源数据库运行在A服务器上,拷贝到B服务器,假定B服务器上MySQL数据库已经安装完成,为空数据库。 首先进入A服…...

RabbitMQ---订阅模型-Fanout
1、 订阅模型-Fanout Fanout,也称为广播。 流程图: 在广播模式下,消息发送流程是这样的: 1) 可以有多个消费者 2) 每个消费者有自己的queue(队列) 3) 每个队列都要绑定…...

nginx 中新增url请求参数
1、nginx中新增配置: set $args "$args&参数名参数值"; 示例: set $args "$args&demo1cn_yaojin&demo2123123&myip$remote_addr"; location / {add_header Access-Control-Allow-Origin *;add_header Access-Contro…...

[系统] 电脑突然变卡 / 电脑突然** / 各种突发情况解决思路
今天来公司办公,开机之后发现电脑出现各种问题,死机、卡顿、点什么都加载,甚至开一个文件夹要1分钟才能打开,花了2个小时才解决,走了很多弯路,其实早点想通,5分钟就能解决问题,所以打…...

改进YOLO系列:8.添加SimAM注意力机制
添加SimAM注意力机制 1. SimAM注意力机制论文2. SimAM注意力机制原理3. SimAM注意力机制的配置3.1common.py配置3.2yolo.py配置3.3yaml文件配置1. SimAM注意力机制论文 论文题目:SimAM: A Simple, Parameter-Free Attention Module for Convolutional Neural Network…...

Go与Rust的对比与分析
Rust 和 Go 是两种现代语言,近年来获得了巨大的关注,每种语言都有自己独特的优势和权衡。在这篇文章中,我们将深入探讨 Rust 和 Go 之间的差异,重点关注性能、语言功能和其他关键因素,以帮助您针对您的开发需求做出明智…...

SpingMVC拦截器-异常处理的思路,用户体验不好的地方
1、异常处理机制 1.1 原先我们的异常都是手动的try..catch() 2、他存在着一些缺陷:这里创建了一个Demo的controller,内部有一个show方法: 3、访问内部,我要实现demoshow方法,我们来调用show1和show2的方法: 4、有一…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...