MyBatis查詢結(jié)果resultType返回值類型的說明
一、返回一般數(shù)據(jù)類型
比如要根據(jù) id 屬性獲得數(shù)據(jù)庫中的某個字段值。
mapper 接口:
// 根據(jù) id 獲得數(shù)據(jù)庫中的 username 字段的值
String getEmpNameById(Integer id);
SQL 映射文件:
<!--
指定 resultType 返回值類型時 String 類型的,
string 在這里是一個別名,代表的是 java.lang.String
對于引用數(shù)據(jù)類型,都是將大寫字母轉(zhuǎn)小寫,比如 HashMap 對應(yīng)的別名是 'hashmap'
基本數(shù)據(jù)類型考慮到重復(fù)的問題,會在其前面加上 '_',比如 byte 對應(yīng)的別名是 '_byte'
-->
<select id="getEmpNameById" resultType="string">
select username from t_employee where id = #{id}
</select>
二、返回 JavaBean 類型
比如根據(jù)某個字段獲得數(shù)據(jù)庫中的信息,把查詢的結(jié)果信息封裝成某個 JavaBean 類型的數(shù)據(jù)。
mapper 接口:
// 根據(jù) id 查詢信息,并把信息封裝成 Employee 對象
Employee getEmpById(Integer id);
SQL 映射文件:
<!--
通過 resultType 指定查詢的結(jié)果是 Employee 類型的數(shù)據(jù)
只需要指定 resultType 的類型,MyBatis 會自動將查詢的結(jié)果映射成 JavaBean 中的屬性
-->
<select id="getEmpById" resultType="employee">
select * from t_employee where id = #{id}
</select>
三、返回List類型
有時候我們要查詢的數(shù)據(jù)不止一條,比如:模糊查詢,全表查詢等,這時候返回的數(shù)據(jù)可能不止是一條數(shù)據(jù),對于多數(shù)據(jù)的處理可以存放在List集合中。
mapper 接口:
// 假如是全表查詢數(shù)據(jù),將查詢的數(shù)據(jù)封裝成 Employee 類型的集合
List<Employee> getAllEmps();
SQL 映射文件:
<!-- 注意這里的 resultType 返回值類型是集合內(nèi)存儲數(shù)據(jù)的類型,不是 'list' --> <select id="getAllEmps" resultType="employee"> select * from t_employee </select>
四、返回Map類型
MyBatis 還支持將查詢的數(shù)據(jù)封裝成Map。
1. 如果查詢的結(jié)果是一條,我們可以把查詢的數(shù)據(jù)以{表字段名, 對應(yīng)的值}方式存入到Map中。
mapper 接口:
// 根據(jù) id 查詢信息,并把結(jié)果信息封裝成 Map
Map<String, Object> getEmpAsMapById(Integer id);
SQL 映射文件:
<!--
注意這里的 resultType 返回值類型是 'map'
-->
<select id="getEmpAsMapById" resultType="map">
select * from t_employee where id = #{id}
</select>
下面把查詢的結(jié)果數(shù)據(jù)貼出來供大家參考:

2. 如果查詢的結(jié)果是多條數(shù)據(jù),我們也可以把查詢的數(shù)據(jù)以{表中某一字段名, JavaBean}方式來封裝成Map。
mapper 接口:
// 查詢所有員工的信息,把數(shù)據(jù)庫中的 'id' 字段作為 key,對應(yīng)的 value 封裝成 Employee 對象
// @MapKey 中的值表示用數(shù)據(jù)庫中的哪個字段名作 key
@MapKey("id")
Map<Integer, Employee> getAllEmpsAsMap();
SQL 映射文件:
<!-- 注意 resultType 返回值類型,不再是 'map',而是 Map 的 value 對應(yīng)的 JavaBean 類型 --> <select id="getAllEmpsAsMap" resultType="employee"> select * from t_employee </select>
下面是查詢的結(jié)果 (只截取了一部分):

MyBatis 允許查詢的結(jié)果封裝成Map,這種機制是極好的。
五、擴展
擴展. 上面返回結(jié)果的形式都是基于查詢 (select) 的,其實對于增刪改的操作也可以返回一定類型的數(shù)據(jù),比如Boolean,Integer等。
總結(jié).
本文主要介紹了在開發(fā)中常用的幾種數(shù)據(jù)返回值類型,希望能夠為你提供幫助。
補充知識:mybatis select返回多條記錄即返回類型為list時,resultType的寫法
如下所示:

查詢出的結(jié)果可能有好多條記錄,返回類型即是list。但resultType還是寫成resultType="user"(user為集合list中的實體類),而不是寫成resultType="java.util.List"
以上這篇MyBatis查詢結(jié)果resultType返回值類型的說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot 中的 Spring Cloud Feign的原
Spring Cloud Feign 是 Spring Cloud 中的一個組件,它可以幫助我們實現(xiàn)聲明式的 REST 客戶,這篇文章主要介紹了Spring Boot 中的 Spring Cloud Feign,需要的朋友可以參考下2023-07-07
Java ByteBuffer網(wǎng)絡(luò)編程用法實例解析
這篇文章主要介紹了Java ByteBuffer網(wǎng)絡(luò)編程用法實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
Java concurrency線程池之線程池原理(四)_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency線程池之線程池原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
SpringBoot @Autowired注入為空的情況解讀
這篇文章主要介紹了SpringBoot @Autowired注入為空的情況解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
Java中Integer.parseInt和Integer.valueOf區(qū)別小結(jié)
在Java中,Integer.parseInt()和Integer.valueOf()都可以將字符串轉(zhuǎn)換為整數(shù)類型,那么他們有哪些區(qū)別呢,本文就來詳細(xì)的介紹一下2023-09-09
Java 超詳細(xì)圖解集合框架的數(shù)據(jù)結(jié)構(gòu)
什么是集合框架呢?集合框架是為表示和操作集合而規(guī)定的一種統(tǒng)一的標(biāo)準(zhǔn)的體系結(jié)構(gòu)。最簡單的集合如數(shù)組、列表和隊列等,任何集合框架一般包含:對外的接口、接口的實現(xiàn)和對集合運算的算法2022-04-04
idea創(chuàng)建的idea項目時springframework出現(xiàn)紅色的原因和解決方法
當(dāng)使用 IntelliJ IDEA 創(chuàng)建 Spring Framework 項目時,springframework 出現(xiàn)紅色可能是因為相關(guān)的 Spring Framework 依賴沒有正確加載或項目的配置有問題,本文給大家介紹了一些常見的原因和解決方法,需要的朋友可以參考下2023-09-09

