Mybatis查询语句汇总与小技巧

news2024/11/19 22:46:47

前言

在之前的学习中,使用到了将查询结果封装到bean对象内,使用到了将查询结果封装的bean对象封装到List集合中,但是如果我们没有对应的bean对象,我们应该将结果封装到哪呢?今天这篇文章就记录一下几种常见查询结果的封装。

准备工作,用到的数据库表

在这里插入图片描述
在这里插入图片描述

返回bean对象

实战

接口中代码

 /***
     * 数据库表中字段能与实体类一一对应,就将查询结果封装到实体类
     * @return
     */
    Car selectToBean(Long id);

sql语句映射文件中代码

<select id="selectToBean" resultType="Car">
        select
            id,
            car_num as carNum,
            brand as Brand,
            guide_price as guidePrice,
            produce_time as produceTime,
            car_type as carType
        from t_car where id = #{id}
    </select>

测试代码

@Test
    public void testSelectToBean(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        Car car = mapper.selectToBean(59L);
        System.out.println(car);
        sqlSession.close();
    }

执行结果
在这里插入图片描述
再将每条记录装到LIst集合就不再展示了。

返回Map

实战

接口中代码

/***
     * 数据库表中字段能与实体类属性不能一一对应,可以将查询结果封装到Map集合
     * 字段名为key,每个字段值为value
     * @return
     */
    Map<String,Object> selectToMap(Long id);

sql语句映射文件中代码

<select id="selectToMap" resultType="map">
        select *
        from t_car where id = #{id}
    </select>

小细节:这里的sql语句不用起别名,下面的查询结果可以看出Map中的key值直接就是数据库表中的字段名

测试代码

@Test
    public void testSelectToMap(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        Map<String,Object> car = mapper.selectToMap(60L);
        System.out.println(car);
        sqlSession.close();
    }

执行结果
在这里插入图片描述

返回List< Map >

如果我们的查询结果不是一条,我们也可以将每一个Map都装到List集合中
实战

接口中代码

/***
     * 查询所有结果将每条记录保存到map中
     * 再将所有map装到list中
     * @return
     */
    List<Map> selectAllToMap();

sql语句映射文件中代码

<select id="selectAllToMap" resultType="map">
        select * from t_car
    </select>

测试代码

@Test
    public void testSelectAllToMap(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        List<Map> cars = mapper.selectAllToMap();
        cars.forEach(car -> System.out.println(car));
        sqlSession.close();
    }

执行结果
在这里插入图片描述

返回Map<String,Map>

为了更加方便我们取出每一个map我们可以用每条记录的id作为大Map的key值,这样我们就可以很方便地取出每条记录
但是我们如何将id作为map地key值呢?
可以使用 @MapKey 这一注解式开发来指定具体步骤见下

实战

接口代码

/***
     *将每一条查询结果存入map,随后将每一个map存入一个大map,
     * 并且大map的key对应数据库表中的主键
     * @return
     */
    @MapKey("id")
    Map<Long,Map<String,Object>> selectAllToBigMap();

sql语句映射文件中代码

<select id="selectAllToBigMap" resultType="map">
        select * from t_car
    </select>

测试代码

@Test
    public void testSelectAllToBigMap(){
        SqlSession sqlSession = SqlSessionUtil.openSession();
        CarMapper mapper = sqlSession.getMapper(CarMapper.class);
        Map<Long,Map<String,Object>> cars = mapper.selectAllToBigMap();
        cars.forEach((id,car)->System.out.println("车id:"+ id + "  汽车信息" + car));
        sqlSession.close();
    }

测试结果
在这里插入图片描述
可以看出可以成功地将车地id取出来

end…

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

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

相关文章

用蹩脚英语在StackOverflow上飞奔:试看以色列兄弟自荐的Http文件上传工具MgntUtils

上班摸鱼、下班干活&#xff0c;日常埋坑、加班填坑——这是我的搬砖&#xff0c;亦是在座的各位&#xff01; 文章目录 1.试看MgntUtils来源2.下载MgntUtils源码3.初探源码4.验证API 1.试看MgntUtils来源 ​ ​上篇文章说到&#xff0c;有个以色列大兄弟在回答Stack Overflow…

13岁青少年DAO创始人:Web3治好了我的“丧”

“我看大家都死气沉沉的&#xff0c;大家都站起来活动活动。” 4月&#xff0c;香港Web3嘉年华的一场沙龙&#xff0c;橙色针织帽给黑压压的现场带来一抹亮色&#xff0c;13岁的Carry Zheng戴着它登台&#xff0c;没有“大家好”的寒暄&#xff0c;直接向台下的成年人发出指令&…

训练营-5月

JAVA训练营-5月 一、环境 1、idea安装 idea就是一个开发工具&#xff0c;写代码的地方 目录结构&#xff1a; --- 项目&#xff08;工程 project&#xff09; 比如&#xff1a;京东 ---- 模块&#xff08;module&#xff09; 比如&#xff1a;订单、购物车、秒杀等 -----…

ALOHA 开源机械臂(Viper 300 Widow X 250 6DOF机械臂 远程操控系统)第四部分

Teleoperation System 远程操作系统 We introduce ALOHA: A Low-cost Open-source Hardware System for Bimanual Teleoperation. With a $20k budget, it is capable of teleoperating precise tasks such as threading a zip tie, dynamic tasks such as juggling a ping p…

【2023 · CANN训练营第一季】进阶班 应用开发深入讲解→端到端案例

1 样例调试 1.1 日志文件 运行应用程序后&#xff0c;若出现报错或异常&#xff0c;需录取日志进一步定位问题。日志文件的默认目录为$HOME/ascend/log。 可通过环境变量指定日志文件的落盘路径 export ASCEND_PROCESS_LOG_PATH/$HOME/xxx但需要确保该目录为任意有读写权限…

外参手算方法

虽然有的slam系统是代外参标定功能&#xff0c;可以在线标定&#xff08;vins&#xff09;或者离线进行标定&#xff0c;但外参标定的质量也会与运动激励相关的&#xff0c;例如对于3自由度的小车很难把z方向的外参标定的很好。有些情况车子或者是定位模块是有设计图纸的&#…

Ubuntu22.04下使用Conda安装PyTorch GPU版本

环境 首先&#xff0c;你需要有 GPU 支持。 Ubuntu 22.04 显卡 $ nvidia-smi Mon May 22 11:15:33 2023 --------------------------------------------------------------------------------------- | NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA…

MySQL在Centos7环境下的安装操作

文章目录 一、卸载不需要的环境二、通过yum安装MySQL1.安装MySQL的yum源2.安装MySQL 三、启动mysql的服务器四、登录MySQL1.方法一2.方法二3.方法三 五、配置my.cnf文件 一、卸载不需要的环境 首先要检查服务器中是否存在mariadb&#xff0c;mariadb是MySQL的一个开源分支&…

栈与C++中的std::stack详解(多图超详细)

文章目录 栈(stack)什么是栈&#xff1f;栈的基本操作和应用入栈&#xff08;push)出栈&#xff08;pop)入栈和出栈的复杂度和应用场景 类模板std::satck形参T和Container成员函数元素访问栈的容量栈的修改 用法示例 栈(stack) 什么是栈&#xff1f; 栈是一种线性的数据结构&…

Python爬虫被封ip解决方案

在使用 Python 程序进行网络爬虫开发时&#xff0c;可能因以下原因导致被封 IP 或封禁爬虫程序&#xff1a; 1、频繁访问网站 爬虫程序可能会在很短的时间内访问网站很多次&#xff0c;从而对目标网站造成较大的负担和压力&#xff0c;这种行为容易引起目标网站的注意并被封禁…

2023ACP世界大赛中国总决赛|让世界再多一个微笑

5月21日&#xff0c;正值第三十三次全国助残日&#xff0c;作为公益推行的一份子&#xff0c;恒利联创也呈现出了“仁者爱人”的文化内核。 恒利联创携手微笑明天慈善基金会合作同行&#xff0c;旨在推动公益&#xff0c;促进残疾人事业的全面发展。在前行的道路上&#xff0c…

MQTT入门手册

初识MQTT MQTT 协议简介 概览 MQTT 是一种基于发布/订阅模式的轻量级消息传输协议&#xff0c;专门针对低带宽和不稳定网络环境的物联网应用而设计&#xff0c;可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于物联网、移动互联网、智能硬件、车联网…

​LeetCode解法汇总1080. 根到叶路径上的不足节点

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 给你二叉树的根节点 root 和一个整数 limit &#xff0c;请你同时删除树中所有 …

Mybatis连接MySQL数据库通过逆向工程简化开发流程

文章目录 一、使用步骤1、建立新项目2、引入pom依赖3、创建逆向工程的配置文件 generatorConfig.xml4、运行逆行工程&#xff0c;生成代码文件 二、案例展示1、建立数据表2、改写对应的配置文件内容1、数据库连接配置,指定自己的数据库2、配置pojo生成的位置3、配置sql映射文件…

新一代数据湖存储技术Apache Paimon入门Demo

目录 前言 1. 什么是 Apache Paimon 一、本地环境快速上手 1、本地Flink伪集群 2、IDEA中跑Paimon Demo 2.1 代码 2.2 IDEA中成功运行 3、IDEA中Stream读写 3.1 流写 3.2 流读&#xff08;toChangeLogStream&#xff09; 二、进阶&#xff1a;本地&#xff08;IDEA&…

【Java EE】Spring介绍

Spring笔记 1.概述1.1 IOC1.2.context上下文和bean1.3.AOP 2.IoC 控制反转2.1. Spring IoC容器和Bean简介2.2. 容器概述2.2.1. 配置元数据2.2.2. 实例化一个容器2.2.3. 使用容器 2.3. Bean 概览2.3.1. Bean 命名2.3.2. 实例化 Bean2.3.3 bean的生命周期 3.AOPAOP 概念 参考资料…

【微博-UITableViewController介绍 Objective-C语言】

一、加载xib文件的另外一种办法 1.我们说,加载xib,一种方式就是, CZFooterView *footerView = [[[NSBundle mainBundle] loadNibNamed:@“CZFooterView” owner:nil options:nil] lastObject]; 吧,这是一种方式, 2.另外一种方式,就是这里这种方式, UINIb *nib = [UI…

关于Jetpack DataStore(Preferences)的八点疑问

前言 DataStore是Android上一种轻量级存储方案&#xff0c;依据官方教程很容易就写出简易的Demo。 本篇主要是分析关于DataStore(Preferences)使用过程中的一些问题&#xff0c;通过问题寻找本质&#xff0c;反过来能更好地指导我们合理使用DataStore。 本篇内容目录&#xff…

浪涌保护器的不同类型解析

本页提到了不同的电涌保护器类型&#xff0c;即1型电涌保护器&#xff0c;2型&#xff0c;3型和4型电涌保护器。 它提到了电涌保护器类型&#xff0c;即GDT&#xff08;气体放电管&#xff09;&#xff0c;TSPD&#xff08;晶闸管浪涌保护装置&#xff09;&#xff0c;TVS&…

来赞达Lazada商品详情接口(item_get-根据ID取商品详情)代码封装

item_get-根据ID取商品详情接口 通过代码封装该接口可以拿到商品标题&#xff0c;商品价格&#xff0c;商品促销信息&#xff0c;商品优惠价&#xff0c;商品库存&#xff0c;sku属性&#xff0c;商品图片&#xff0c;desc图片&#xff0c;desc描述&#xff0c;sku图片&#xf…