最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis+lombok出現(xiàn)java.lang.IndexOutOfBoundsException錯(cuò)誤及解決

 更新時(shí)間:2025年02月18日 09:08:47   作者:一顆小小的石頭.  
在使用MyBatis和Lombok時(shí),如果遇到j(luò)ava.lang.IndexOutOfBoundsException問(wèn)題,是因?yàn)镸yBatis在嘗試將查詢結(jié)果封裝成Java對(duì)象時(shí),找不到構(gòu)造函數(shù)中對(duì)應(yīng)的字段,這通常是由于Lombok的@Builder注解生成了全參構(gòu)造函數(shù)

mybatis+lombok出現(xiàn)java.lang.IndexOutOfBoundsException

問(wèn)題描述

報(bào)錯(cuò)圖

就是一個(gè)簡(jiǎn)單的select語(yǔ)句,拿出來(lái)單獨(dú)運(yùn)行也是OK的。

select s.sid,s.title,s.url,s.icon,s.cate_id from sites s

跟進(jìn)錯(cuò)誤棧調(diào)試發(fā)現(xiàn),報(bào)錯(cuò)是因?yàn)閙ybatis要把select出來(lái)的字段包裝成Java對(duì)象時(shí),找不到其構(gòu)造函數(shù)中對(duì)應(yīng)的字段。

構(gòu)造函數(shù)為啥這5個(gè)字段呢。就是因?yàn)橛昧薼ombok的@Builder方法,這個(gè)注解生成了全參的構(gòu)造函數(shù),但沒(méi)有這5個(gè)參數(shù)的構(gòu)造器。

越界點(diǎn)

這里for循環(huán)constructor.getParameterTypes().length就是全參構(gòu)造器的參數(shù)數(shù)量,我這里是11個(gè)。rsw.getColumnNames().get(i)越界報(bào)錯(cuò)。

解釋一下:

rsw是mybatis運(yùn)行sql得到的列,我這里有5個(gè)。所以當(dāng)i循環(huán)超過(guò)5時(shí),get(i)會(huì)越界。

解決方案

  • 知道原因就知道如何解決了。這里我們需要有無(wú)參構(gòu)造函數(shù)。
  • 于是在@Builder上面加@NoArgsConstructor就行了,但是編譯不過(guò)。
  • 因?yàn)锧Builder自帶的全參構(gòu)造器是會(huì)被覆蓋的,所以這時(shí)候再加@AllArgsConstructor才可以。

最終結(jié)果:

結(jié)果

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文徹底掌握RocketMQ 的存儲(chǔ)模型

    一文徹底掌握RocketMQ 的存儲(chǔ)模型

    這篇文章主要介紹了RocketMQ 的存儲(chǔ)模型,本文的重點(diǎn)在于分析 BrokerServer 的消息存儲(chǔ)模型,筆者按照自己的理解 , 嘗試分析 RocketMQ 的存儲(chǔ)模型,需要的朋友可以參考下
    2022-12-12
  • SpringBoot Test類注入失敗的解決

    SpringBoot Test類注入失敗的解決

    這篇文章主要介紹了SpringBoot Test類注入失敗的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Java中實(shí)現(xiàn)定時(shí)任務(wù)的兩種方法舉例詳解

    Java中實(shí)現(xiàn)定時(shí)任務(wù)的兩種方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于Java中實(shí)現(xiàn)定時(shí)任務(wù)的兩種方法,文中總結(jié)了各種實(shí)現(xiàn)方式的優(yōu)缺點(diǎn),并給出了推薦的使用場(chǎng)景,通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • JAVA利用HttpClient進(jìn)行HTTPS接口調(diào)用的方法

    JAVA利用HttpClient進(jìn)行HTTPS接口調(diào)用的方法

    本篇文章主要介紹了JAVA利用HttpClient進(jìn)行HTTPS接口調(diào)用的方法,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • Spring中的PathVariable注釋解析

    Spring中的PathVariable注釋解析

    這篇文章主要介紹了Spring中的PathVariable注釋用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 使用Maven將springboot工程打包成docker鏡像

    使用Maven將springboot工程打包成docker鏡像

    這篇文章主要介紹了使用Maven將springboot工程打包成docker鏡像,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JDBC連接Mysql的5種方式實(shí)例總結(jié)

    JDBC連接Mysql的5種方式實(shí)例總結(jié)

    JDBC是Java DataBase Connectivity技術(shù)的簡(jiǎn)稱,是一種可用于執(zhí)行 SQL語(yǔ)句的Java API,下面這篇文章主要給大家介紹了關(guān)于JDBC連接Mysql的5種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • SpringBoot配置文件格式詳細(xì)介紹

    SpringBoot配置文件格式詳細(xì)介紹

    這篇文章主要為大家詳細(xì)介紹了SpringBoot配置文件格式,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)SpringBoot有一定幫助,需要的可以參考一下
    2022-09-09
  • java學(xué)習(xí)筆記之eclipse+tomcat 配置

    java學(xué)習(xí)筆記之eclipse+tomcat 配置

    俗話說(shuō):工欲善其事必先利其器,既然要學(xué)習(xí)java,首先把java的開(kāi)發(fā)環(huán)境搗鼓一下吧,這里我們來(lái)談?wù)別clipse+tomcat的配置方法。
    2014-11-11
  • 如何使用Jenkins編譯并打包SpringCloud微服務(wù)目錄

    如何使用Jenkins編譯并打包SpringCloud微服務(wù)目錄

    這篇文章主要介紹了如何使用Jenkins編譯并打包SpringCloud微服務(wù)目錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論

乡城县| 府谷县| 成都市| 鸡西市| 巴中市| 霍林郭勒市| 河间市| 冕宁县| 龙口市| 同江市| 通道| 聂荣县| 仪陇县| 徐水县| 卢氏县| 台前县| 平泉县| 闵行区| 临朐县| 岳西县| 翼城县| 丘北县| 正蓝旗| 阿拉善左旗| 双辽市| 大同县| 湘乡市| 时尚| 旌德县| 酒泉市| 岑溪市| 柳州市| 类乌齐县| 商南县| 丰顺县| 河北省| 蕲春县| 泗阳县| 碌曲县| 松溪县| 马山县|