常見的MyBatis中查詢結果resultType返回值類型


一、返回一般數據類型
比如要根據 id 屬性獲得數據庫中的某個字段值。

mapper (dao)接口:

     // 根據 id 獲得數據庫中的 username 字段的值
     String getStuNameById(Integer id);


Mapper.xml 映射文件:

<!-- 指定 resultType 返回值類型時 String 類型的,string 在這里是一個別名,代表的是 java.lang.String

對於引用數據類型,都是將大寫字母轉小寫,比如 HashMap 對應的別名是 'hashmap'

基本數據類型考慮到重復的問題,會在其前面加上 '_',比如 byte 對應的別名是 '_byte'-->

<select id="getStuNameById" resultType="string">
      select username from t_student where id = #{id}
</select>

二、返回 JavaBean 類型
比如根據某個字段獲得數據庫中的信息,把查詢的結果信息封裝成某個 JavaBean 類型的數據。

mapper (dao)接口:

  // 根據 id 查詢信息,並把信息封裝成 Student 對象
   Student getStuById(Integer id);

Mapper.xml  映射文件:

  <!-- 通過 resultType 指定查詢的結果是 Student類型的數據 只需要指定 resultType 的類型,MyBatis 會自動將查詢的結果映射成 JavaBean 中的屬性-->

  <select id="getStuById" resultType="student">
      select * from t_student where id = #{id}
  </select>

三、返回List類型
有時候我們要查詢的數據不止一條,比如:模糊查詢,全表查詢等,這時候返回的數據可能不止是一條數據,對於多數據的處理可以存放在List集合中。

mapper(dao) 接口:

    // 假如是全表查詢數據,將查詢的數據封裝成Student類型的集合
    List<Student> getAllStus();

Mapper.xml  映射文件:

   <!--注意這里的 resultType 返回值類型是集合內存儲數據的類型,不是 'list'-->
   <select id="getAllStus" resultType="student">
       select * from t_student
   </select>

四、返回Map類型
MyBatis支持將查詢的數據封裝成Map。

1. 如果查詢的結果是一條,我們可以把查詢的數據以{表字段名, 對應的值}方式存入到Map中。

mapper (dao)接口:

 // 根據 id 查詢信息,並把結果信息封裝成 Map
 Map<String, Object> getStuAsMapById(Integer id);

Mapper.xml  映射文件:

<!-- 注意這里的 resultType 返回值類型是 'map'-->
 <select id="getStuAsMapById" resultType="map">
     select * from t_student where id = #{id}
 </select>

2. 如果查詢的結果是多條數據,我們也可以把查詢的數據以{表中某一字段名, JavaBean}方式來封裝成Map。

mapper (dao)接口:

// 查詢所有學生的信息,把數據庫中的 'id' 字段作為 key,對應的 value 封裝成 Student 對象
// @MapKey 中的值表示用數據庫中的哪個字段名作 key
@MapKey("id")
Map<Integer, Student> getAllStusAsMap();

Mapper.xml  映射文件:

<!--注意 resultType 返回值類型,不再是 'map',而是 Map 的 value 對應的 JavaBean 類型-->
<select id="getAllStusAsMap" resultType="student">
    select * from t_student
</select>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM