五、MyBatis各种查询功能

news2024/11/28 3:52:23

MyBatis的各种查询功能

  • 如果查询出的数据只有一条,可以通过
  1. 实体类对象接收
  2. List集合接收
  3. Map集合接收
  • 如果查询出的数据有多条,一定不能用实体对象接收,会抛TooManyResultsException,可以通过
  1. 实体类类型的List集合接收
  2. Map类型的List集合接收
  3. 在mapper接口的方法上添加@MapKey注解

1.查询一个实体类对象----根据id查询用户信息

①在UserMapper接口里面定义方法

 ②在UserMapper.xml配置

2.查询一个List集合--所有用户信息

 ①UserMapper接口

②在UserMapper配置类里面

3.查询单个数据—查询用户数量

  • 在MyBatis中,java常用类型都设置了类型别名
  • java.lang.Integeràint或integer
  • int->_int(基本数据类型就是_类型)
  • Map->map
  • String->string

①在UserMaper接口写上方法名

 ②在UserMapper.xml,resultType查询出结果的类型

4.查询一条数据为map集合

①在UserMapper接口里,Map<String,Object>,String代表属性名,Object代表属性值

/**
 * 根据id查询出用户信息,返回map
 */
Map<String,Object> getUserById(@Param("id") Integer id);

 ②在UserMapper.xml配置类

 ③测试

public class test {
   @Test
   public void t1() {
      SqlSession sqlSession = SqlSessionUtils.getSqlSession();
      ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
      Map<String, Object> userById = mapper.getUserById(45);
      for (String key:userById.keySet()) {
         Object values =  userById.get(key);
         System.out.println(key+"=="+values);
      }
   }
}

结果是 属性名==属性值 组合成的map集合

4.查询多条数据为map集合

  • 查询所有用户信息为map集合
  • 将表中的数据以map集合查询,一条数据对应一个map
  • 多条数据,多个map集合,存放在一个list集合中获取

方式一

①在UserMapper接口,List<Map<String,Object>>,把多个map放在list集合中。每一个list集合是map

/**
 * 根据id查询出用户信息,返回map
 * @return
 */
List<Map<String,Object>> getAllUser();

 ②在UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.mapper.ParameterMapper">
    <select id="getAllUser" resultType="java.util.Map">
        select * from t_user
    </select>
</mapper>

③测试

public class test {
   @Test
   public void t1() {
      SqlSession sqlSession = SqlSessionUtils.getSqlSession();
      ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
      List<Map<String, Object>> allUser = mapper.getAllUser();

      for (Map<String, Object> map:allUser
           ) {
         System.out.println("每个map信息如下========");
         for (String key:map.keySet()) {
            Object value = map.get(key);
            System.out.println(key+"=="+value);
         }
      }
   }
}

方式二 通过添加@MapKey(”id”)注解,此时键是id,值是每条数据转换为map集合

 ①在UserMapper接口里

/**
 * 根据id查询出用户信息,返回map
 */
@MapKey("id")
Map<Integer,Object> getAllUser();

②在UserMapper.xml里

<select id="getAllUser" resultType="java.util.Map">
    select * from t_user
</select>

③测试

public void t1() {
   SqlSession sqlSession = SqlSessionUtils.getSqlSession();
   ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
   Map<Integer, Object> allUser = mapper.getAllUser();
   for (Integer id : allUser.keySet()) {
      Object user = allUser.get(id);
      System.out.println(id+"=="+user);
   }
}

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

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

相关文章

Python爬虫自动化从入门到精通第10天(Scrapy框架的基本使用)

Scrapy框架的基本使用Scrapy框架简介Scrapy框架的运作流程安装Scrapy框架Scrapy框架的基本操作Scrapy常用命令Scrapy框架简介 Scrapy框架主要包含以下组件&#xff1a; Scrapy Engine(引擎)&#xff1a;负责Spiders、Item Pipeline、Downloader、Scheduler之间的通信&#xf…

手把手教你安装Visual Studio 2019(史上最全)

前言: 本文是以Visual Studio Community 2019为例子,介绍如何在微软官网下载Visual Studio Community 2019并安装.net桌面开发程序环境(主要是winform开发环境)。 下载请点击这里Visual Studio Community 2019下载,然后点击下图的箭头的DownLoad下载,要注意的是下载时要…

微信自定义菜单

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…

全链路压测时动态路由数据源MySQL、MongoDB、Redis

目录 一、全链路压测 二、动态路由Mysql 1. 参数配置application-localDynamic.yml 2. 加载配置参数DynamicDataSourceProperties.java 3. 动态数据源DynamicDataSource.java 4. 动态数据源供应DynamicDataSourceProvider.java 5. 动态数据源bean 6. 动态数据源上下文D…

PWN-ret2shellcode原理

我们之前做过很简单的pwn题目 buuctf-rip这种 是在程序中存在shellcode 直接返回地址改为这个shellcode的地址即可 但是如果程序里面没有呢 这种类型就是ret2shellcode 常见的shellcode shellcode "\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5…

一起读源码 —— Fastjson 的核心方法及其实现原理

源码介绍 Fastjson 是阿里巴巴开源的一个 Java 工具库&#xff0c;它常常被用来完成 Java 的对象与 JSON 格式的字符串的相互转化。 此文读的源码是撰写此文时 Fastjson 的最新的发布版本&#xff0c;即 1.2.83 下载源码 请前去 github 找到 release 最新版下载后解压&…

智慧水务之排水系统物联网监测

1.1排水系统 1.1.1监测范围选择依据 &#xff08;1&#xff09;管网老化、设计标准低、合流制管网区域 管网建设年代久远&#xff0c;通常管网发生破损问题较大&#xff1b;管网设计标准较低&#xff0c;易引发淤堵或溢流&#xff1b;合流制管网受天气影响大&#xff0c;会对…

FFMPEG: [ API ] >打开/关闭一个输入文件

它们是成对出现的. ffmpeg 把输入文件--转换成--->AVFormatContext实例 ◆ avformat_open_input() int avformat_open_input(AVFormatContext ** ps,const char * url,ff_const59 AVInputFormat * fmt,AVDictionary ** options )Open an input stream and read the header.…

跨越语言的艺术:Weblogic序列化漏洞与IIOP协议

0x01 概述 Weblogic 的序列化漏洞主要依赖于 T3 和 IIOP 协议&#xff0c;这两种协议在通信交互的过程中存在如跨语言、网络传输等方面的诸多问题&#xff0c;会给漏洞的检测和利用带来许多不便。在白帽汇安全研究院的理念中&#xff0c;漏洞检测和利用是一项需要创造性的工作…

速锐得新能源电动汽车整车能耗热管理CAN总线模块开发方案

一、新能源时代背景 新能源汽车浪潮席卷而来&#xff0c;随着汽车向电动化和智能化方向发展&#xff0c;对汽车能量管理的要求也越来越高。而直冷直热热泵空调热管理系统是新能源汽车领域的新蓝海&#xff0c;随着热管理系统的崛起&#xff0c;在整车能耗热管理采集模块开发方…

计算机组成原理——第四章指令系统(下)

本是青灯不归客&#xff0c;却因浊酒恋红尘 文章目录前言4.3.1 高级语言与机器级代码之间的对应4.3.2 常用的X86汇编指令4.3.3 ATu0026T格式和Intel格式4.3.4 选择语句的机器级表示4.3.5 循环语句的机器级表示4.4 CiSC和RiSC前言 接下来这部分主要讲的就是高级语言与汇编语言的…

Thymeleaf select回显并选中多个

语法&#xff1a; selected"selected" 或 selectedtrue ${#strings.indexOf(name,frag)} 或者 ${#lists.contains(list, element)} 或者 ${#strings.contains(name,ez)} 或者 ${#strings.containsIgnoreCase(name,ez)} 都可以实现。 多选示例 &#xff1a; &…

linux 集群时间同步

前言 由于搭建hadoop集群需要进行集群时间同步&#xff0c;记录下具体操作过程。 这里我的集群环境为192.168.184.129&#xff08;主&#xff09;、192.168.184.130&#xff08;从&#xff09;、192.168.184.131&#xff08;从&#xff09;&#xff0c;设置从机器从主机器同步…

Windows XP设置Outlook电子邮箱

一、问题描述 在Windows XP操作系统中进行Outlook电子邮箱的设置。 二、具体步骤 1、点击“开始”&#xff0c;找到“电子邮件&#xff08;Outlook Express&#xff09;并点击&#xff1a; 2、点击“设置邮件账户”。 3、输入自己的姓名&#xff0c;点击“下一步”。 4、…

Hive UDTF、窗口函数、自定义函数

目录 1 UDTF 1.1 概述 1.2 explode 1.3 posexplode 1.4 inline 1.5 Lateral View 2 窗口函数&#xff08;开窗函数&#xff09; 2.1 定义 2.2 语法 2.2.1 语法--函数 2.2.2 语法--窗口 2.2.3 常用窗口函数 3 自定义函数 3.1 基本知识 3.2 实现自定义函数 3.2.1 …

RestClient操作文档

RestClient操作文档5.RestClient操作文档5.1.新增文档5.1.1.索引库实体类5.1.2.语法说明5.1.3.完整代码5.2.查询文档5.2.1.语法说明5.2.2.完整代码5.3.删除文档5.4.修改文档5.4.1.语法说明5.4.2.完整代码5.5.批量导入文档5.5.1.语法说明5.5.2.完整代码5.6.小结5.RestClient操作…

JavaSE学习进阶day04_02 Calendar类

第三章 Calendar类 3.1 概述 java.util.Calendar类表示一个“日历类”&#xff0c;可以进行日期运算。它是一个抽象类&#xff0c;不能创建对象&#xff0c;我们可以使用它的子类&#xff1a;java.util.GregorianCalendar类。 有两种方式可以获取GregorianCalendar对象&#…

《Advanced R》学习笔记 | Chapter3 Vectors

专注系列化、高质量的R语言教程推文索引 | 联系小编 | 付费合集本篇推文是学堂君学习第3章“Vectors”的笔记&#xff0c;原文链接是https://adv-r.hadley.nz/vectors-chap.html&#xff0c;可在文末“阅读原文”处直达。通过本章的学习&#xff0c;我们可以更清晰地理解R语言中…

IDPChat:探索基于LLaMA和Stable Diffusion的「开源」中文多模态AI大模型

中文多模态模型 IDPChat 和大家见面了。 随着GPT4、文心一言等的发布&#xff0c;预训练大模型正式开启由单模态向多模态模型演进。多模态的特性为语言模型带来更加丰富的应用场景。 我们认为&#xff0c;未来的AI应用将主要以大模型为核心基石。 而在大模型的领域&#xff0c;…

PFTL101A 2.0KN 3BSE004172R1控制卷取物体时保持物体相互拉长或者绷紧的力

PFTL101A 2.0KN 3BSE004172R1控制卷取物体时保持物体相互拉长或者绷紧的力 ​ 基于单片机的放卷机张力控制系统设计 张力控制&#xff0c;通俗地讲&#xff0c;就是要控制卷取物体时保持物体相互拉长或者绷紧的力。张力应用于最广泛的造纸、纤维、塑料薄膜、电线、印刷品、磁带…