91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mapper類中存在名稱相同的方法重載報錯怎么解決

發布時間:2023-05-09 17:39:59 來源:億速云 閱讀:230 作者:iii 欄目:開發技術

今天小編給大家分享一下Mapper類中存在名稱相同的方法重載報錯怎么解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    Mapper類中存在名稱相同的方法重載報錯

    項目場景

    官網項目開發

    問題描述

    Mapper類中存在名稱相同的方法重載報錯

    為了省事,直接在mapper層通過@select@update等注解形式寫sql (此時大都是單表查詢沒有創建mapper.xml文件)代碼如下:

        @Update("")
        void updateSortBySort(Integer newSort, Integer platform, Integer classification);
        @Update("")
        void updateSortBySort(Integer oldSort, Integer newSort, Integer platform, Integer classification);

    此時可以正常使用

    接下來因為業務原因,需要進行多表查詢,僅使用mybatis自帶的不行,需要使用mapper.xml文件寫sql腳本,進行多表查詢

        @Update("")
        void updateSortBySort(Integer newSort, Integer platform, Integer classification);
        @Update("")
        void updateSortBySort(Integer oldSort, Integer newSort, Integer platform, Integer classification);
        IPage<List<ProductVo>> getlistPage(IPage<ProductVo> page,
                                                  @Param("Param1")Integer Param1,
                                                  @Param("Param2")Integer Param2);

    此時調用第一個updateSortBySort方法的接口,會報一個“Parameter &lsquo;oldSort&rsquo; not found 就是參數不存在的錯誤”

    原因分析

    找到了原因:在使用@Select等注解的情況下,方法名即為mapper的id,id相同。重載的方法會報這個錯

    假如項目啟動時候通過反射獲取mapper方法數組順序先是在第一個

    此時調用方法,正常,不會有問題;

    因為mybatis查找mapper內的方法是靠方法名,和參數無關。方法名就是mapper.xml里面的id一樣

    當不進行方法的重載時,即:每個方法都有唯一的命名時,在xml中進行映射后,就可以執行,不會出現異常。

    所以mybatis中mapper.xml是不會準確映射到Java中的重載方法的。最好不要在mapper接口中使用方法重載。

    方法重載和方法重寫的區別

    方法的重載的規則

    • 方法名必須相同

    • 參數列表必須不同(個數不同、或類型不同、參數排列順序不同等)

    • 方法的返回類型可以相同也可以不相同

    • 僅僅返回類型不同不足以成為方法的重載

    重載就是在一個類中,有相同的函數名稱,但形參不同的函數

    方法名相同時,編譯器會根據調用方法的參數個數、參數類型等去逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯

    方法的重寫

    • 方法名必須相同

    • 參數列表必須相同

    • 修飾符:范圍可以擴大但不能縮小 :public>protect>default>private

    重寫:子類的方法和父類必須一致,方法體可以不同。需要有繼承關系,子類重寫父類方法

    以上就是“Mapper類中存在名稱相同的方法重載報錯怎么解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    仪征市| 儋州市| 海淀区| 东兴市| 崇州市| 大方县| 嘉兴市| 突泉县| 汽车| 德昌县| 巢湖市| 横山县| 随州市| 咸阳市| 林甸县| 宁阳县| 柳州市| 卢龙县| 翁牛特旗| 新郑市| 东方市| 阳原县| 苏尼特左旗| 海阳市| 凭祥市| 沂水县| 余江县| 黄浦区| 万荣县| 平乡县| 越西县| 远安县| 仪征市| 丹棱县| 义乌市| 都安| 上饶县| 甘德县| 嘉祥县| 沾益县| 嘉兴市|