国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - MyBatis在DAO層定義接口返回類型泛型無效的解決

MyBatis在DAO層定義接口返回類型泛型無效的解決

2021-10-29 10:58程序員阿坤 Java教程

這篇文章主要介紹了MyBatis在DAO層定義接口返回類型泛型無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

MyBatis DAO層定義接口返回類型泛型無效

今天很偶然的因為一次粗心而發現的一個mybatis問題,這里就寫出來與大家分享一下。

MyBatis在DAO層定義接口返回類型泛型無效的解決

DAO層定義了一個接口,返回String集合,用于獲取最熱門的搜索信息。

MyBatis在DAO層定義接口返回類型泛型無效的解決

mapper.xml文件接口返回的類型卻是search對象。

MyBatis在DAO層定義接口返回類型泛型無效的解決

調用接口,返回的是search對象集合,沒有報錯,泛型沒起到作用。

仔細一想,泛型是在編譯階段將我們的返回值類型匹配到一具體類型,而DAO層的接口卻沒有具體的返回值信息,所以在編譯階段它是可以通過的,這也就是說我們在DAO層定義的接口返回值泛型是不起作用的,具體的類型還是得依靠mapper.xml文件中定義的返回值類型為準。

那如果我們定義了泛型,并根據泛型來操作數據是不是會報錯呢?

我特地實驗了一番。mapper.xml查詢實際返回的是Person對象,而我使用的Animal對象集合去接收,并對集合進行了遍歷操作

MyBatis在DAO層定義接口返回類型泛型無效的解決

MyBatis在DAO層定義接口返回類型泛型無效的解決

MyBatis在DAO層定義接口返回類型泛型無效的解決

MyBatis在DAO層定義接口返回類型泛型無效的解決

最后報了ClassCastException,所以得出結論,DAO層接口定義的返回值泛型是沒有用的,實際返回需要根據具體的mapper.xml文件對應的方法返回值來確定。

但是我們卻可以根據泛型類型來進行數據的操作,這也不算是bug,只是泛型和mybatis沒有很好的融合吧,個人理解。

注意:

mybatis的DAO層接口與mapper.xml文件的對應是通過代理類來實現的,有兩種方式,一種是通過namespace來對應,一種是放在同一路徑下,但是要確保接口文件和xml文件名字相同。

MyBatis返回類型

分類及返回值類型

對應的分類為

1、resultMap

2、resultType

對應返回值類型

1、resultMap:結果集

2、resultType:int,string ,long ,class

要點

在MyBatis進行查詢映射時,其實查詢出來的每一個屬性都是放在一個對應的Map里面的,其中鍵是屬性名,值則是其對應的值。

1、當提供的返回類型屬性是resultType時,MyBatis會將Map里面的鍵值對取出賦給resultType所指定的對象對應的屬性。所以其實MyBatis的每一個查詢映射的返回類型都是ResultMap,只是當提供的返回類型屬性是resultType的時候,MyBatis對自動的給把對應的值賦給resultType所指定對象的屬性。

2、當提供的返回類型是resultMap時,因為Map不能很好表示領域模型,就需要自己再進一步的把它轉化為對應的對象,這常常在復雜查詢中很有作用。

示例

resultMap案例

<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" > 
    select   
    <include refid="Base_Column_List" />  
    from common_car_make  
    where id = #{id,jdbcType=BIGINT}  
</select>  

resultType--long案例

<select id="queryCarTypeByModelIdCount" resultType="java.lang.Long" parameterType="java.util.Map">  
     select count(*)  from common_car_type cm  
     where 1=1  
     <if test="carModelId != null">  
         and  cm.car_model_id = #{carModelId,jdbcType=DECIMAL}  
     </if>  
</select>  

resultType--int案例

<select id="queryCategoryBrandCount" resultType="java.lang.Integer" parameterType="java.util.HashMap" >  
      select count(1)  
      from common_category_brand  
      where 1=1  
      <if test="categoryId != null" >  
          and category_id = #{categoryId,jdbcType=BIGINT}  
      </if>  
      <if test="brandId != null" >  
          and brand_id = #{brandId,jdbcType=BIGINT}  
      </if>  
</select>  

resultType--class案例:查詢結果對應類中的屬性值

<select id="selectCommonBrand" resultType="com.epeit.api.model.CommonBrandPo" parameterType="java.lang.Long" >  
    select id, brand_name brandName, brand_type brandType, icon, delete_flag deleteFlag  
    from common_brand  
    where id = #{id,jdbcType=BIGINT}  
</select>  

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/KKKun_Joe/article/details/80188336

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
主站蜘蛛池模板: 欧美一级片在线 | 精品无码久久久久国产 | 欧美三级视频 | 国产精品三级久久久久久电影 | 天天拍天天干天天操 | 精品美女在线观看 | 黄色在线免费观看 | 国产偷窥老熟盗摄视频 | 秋霞电影院午夜伦 | 色婷婷综合久久久中字幕精品久久 | 国产欧美久久一区二区三区 | 亚洲国产精品久久人人爱 | 中文字幕在线精品 | 日韩欧美在线综合网 | 国产伦理一区 | 久久这里有精品视频 | 亚洲成人精品在线 | 中文字幕国产视频 | 日韩一区免费在线观看 | av一区二区在线观看 | 亚洲成人精选 | 一级黄色片在线 | 亚洲视频精品 | 中文字幕在线观看av | 国产精品一区视频 | 久久久国产精品免费观看 | 天堂网av在线 | 91综合国产 | 国产在线视频一区 | 日日干夜夜骑 | 中文字幕av在线播放 | 一本一道久久精品综合 | 成人在线免费看视频 | 久久精品一区二区 | av免费在线观看网站 | 亚洲激情一区二区 | 涩涩一区 | 媚黑视频 | 黄色网址免费 | 美女爽到呻吟久久久久 | 久久久久黑人 |