MyBatis查询结果resultType返回值类型详细介绍

一、返回一般数据类型比如要根据id属性获得数据库中的某个字段值。mapper接口://根据id获得数据库中的username字段的值StringgetEmpNameById(Integerid);SQL映射文件:<!–指定resultType返回值类型时String类型的,str…

大家好,又见面了,我是你们的朋友全栈君。

一、返回一般数据类型

比如要根据 id 属性获得数据库中的某个字段值。

mapper 接口:

    // 根据 id 获得数据库中的 username 字段的值
    String getEmpNameById(Integer id);

SQL 映射文件:

    <!-- 指定 resultType 返回值类型时 String 类型的, string 在这里是一个别名,代表的是 java.lang.String 对于引用数据类型,都是将大写字母转小写,比如 HashMap 对应的别名是 'hashmap' 基本数据类型考虑到重复的问题,会在其前面加上 '_',比如 byte 对应的别名是 '_byte' -->
    <select id="getEmpNameById" resultType="string">
        select username from t_employee where id = #{id}
    </select>

二、返回 JavaBean 类型

比如根据某个字段获得数据库中的信息,把查询的结果信息封装成某个 JavaBean 类型的数据。

mapper 接口:

    // 根据 id 查询信息,并把信息封装成 Employee 对象
    Employee getEmpById(Integer id);

SQL 映射文件:

    <!-- 通过 resultType 指定查询的结果是 Employee 类型的数据 只需要指定 resultType 的类型,MyBatis 会自动将查询的结果映射成 JavaBean 中的属性 -->
    <select id="getEmpById" resultType="employee">
        select * from t_employee where id = #{id}
    </select>

三、返回List类型

有时候我们要查询的数据不止一条,比如:模糊查询,全表查询等,这时候返回的数据可能不止是一条数据,对于多数据的处理可以存放在List集合中。

mapper 接口:

    // 假如是全表查询数据,将查询的数据封装成 Employee 类型的集合
    List<Employee> getAllEmps();

SQL 映射文件:

    <!-- 注意这里的 resultType 返回值类型是集合内存储数据的类型,不是 'list' -->
    <select id="getAllEmps" resultType="employee">
        select * from t_employee
    </select>

四、返回Map类型

MyBatis 还支持将查询的数据封装成Map。

1. 如果查询的结果是一条,我们可以把查询的数据以{表字段名, 对应的值}方式存入到Map中。

mapper 接口:

    // 根据 id 查询信息,并把结果信息封装成 Map 
    Map<String, Object> getEmpAsMapById(Integer id);

SQL 映射文件:

    <!-- 注意这里的 resultType 返回值类型是 'map' -->
    <select id="getEmpAsMapById" resultType="map">
        select * from t_employee where id = #{id}
    </select>

下面把查询的结果数据贴出来供大家参考:
这里写图片描述
2. 如果查询的结果是多条数据,我们也可以把查询的数据以{表中某一字段名, JavaBean}方式来封装成Map。

mapper 接口:

    // 查询所有员工的信息,把数据库中的 'id' 字段作为 key,对应的 value 封装成 Employee 对象
    // @MapKey 中的值表示用数据库中的哪个字段名作 key
    @MapKey("id")
    Map<Integer, Employee> getAllEmpsAsMap();

SQL 映射文件:

    <!-- 注意 resultType 返回值类型,不再是 'map',而是 Map 的 value 对应的 JavaBean 类型 -->
    <select id="getAllEmpsAsMap" resultType="employee">
        select * from t_employee
    </select>

下面是查询的结果 (只截取了一部分):
这里写图片描述

MyBatis 允许查询的结果封装成Map,这种机制是极好的。

五、扩展

扩展. 上面返回结果的形式都是基于查询 (select) 的,其实对于增删改的操作也可以返回一定类型的数据,比如Boolean,Integer等。

总结. 这篇博文主要介绍了在开发中常用的几种数据返回值类型,希望能够为你提供帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124548.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 新手学堂之有刷/无刷动力电调与马达知识[通俗易懂]

    新手学堂之有刷/无刷动力电调与马达知识[通俗易懂]新手学堂之有刷-无刷动力知识FunRCStudio原创资料,只发RCFANS,如需转载务必注明出处。模型车需要行驶,就跟真车一样,需要一套动力单元,也有分电动和油动,至于混合动力这个估计就不需要奢望了,对于车模这么小的空间来说是不现实的,而且模型车也不需要考虑燃油经济性的问题。本文则重点介绍电动模型的动力单元。电动模型的动力,主要是指2个元件:第一就是带动

    2022年5月25日
  • 《JavaScript设计模式》初次笔记——wsdchong[通俗易懂]

    《JavaScript设计模式》初次笔记——wsdchong[通俗易懂]《JavaScript设计模式》初次笔记前言设计模式一直久仰大名,但是没有去花时间去了解,于是今天特意花时间去看《JavaScript设计模式》(2013年6月出版)和w3cschool上的设计模式。然后做了一些笔记。以《JavaScript设计模式》为目录,以w3cschool上的设计模式为补充。讲的内容有三:设计模式、JavaScript设计模式、其他(模块化的JavaScript设计模式、jQuery设计模式、jQuery插件设计模式)。学习目的:尝试性地了解JavaScript设计模式,方

    2022年7月12日
  • webgame开发中的文件解密

    webgame开发中的文件解密上一篇讲的是文件的加密,这一篇记录一下如何加载并显示图片。 因为图片文件经过加密,已经成了二进制流的文件了(一堆乱码),只能使用URLStream来加载资源了。这里有一点要注意:URLStream中的读取操作是非阻塞的,在读取数据之前必须使用bytesAvailable属性来确定是否能够获取足够的数据,如何不能获取足够的数据,将引发EOFError异常。 主要思路:1、加载…

    2022年6月7日
  • python 图片重命名_python批量重命名文件

    python 图片重命名_python批量重命名文件一个简单的python脚本,用于图片批量重命名,非常简单但是也非常使用!

    2022年9月4日
  • “ORA-01017(:用户名/口令无效; 登录被拒绝)”解决办法

    “ORA-01017(:用户名/口令无效; 登录被拒绝)”解决办法报错:ORA-01017(:用户名/口令无效;登录被拒绝)1.打开CMD命令窗,输入sqlplus/assysdba1)修改密码SQL>alteruser用户名identifiedby密码2)用户被锁定,解锁ALTERUSERusernameACCOUNTUNLOCK;再次登录验证,成功…

    2022年6月1日
  • git/github使用完整教程(1)基础

    git/github使用完整教程(1)基础安装git在Linux上安装Git首先输入git,看看系统有没有安装Git:$gitTheprogram’git’iscurrentlynotinstalled.Youcaninstallitbytyping:sudoapt-getinstallgit像上面的命令,有很多Linux会友好地告诉你Git没有安装,还会告诉你如何安装Git。如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,ma

    2022年5月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号