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

解決Mybatis出現(xiàn)報(bào)錯(cuò)Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of

 更新時(shí)間:2024年05月21日 09:02:28   作者:初心繪流年  
這篇文章主要介紹了解決Mybatis出現(xiàn)報(bào)錯(cuò)Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

錯(cuò)誤現(xiàn)象

確認(rèn)SQL沒有任何問題,但是在執(zhí)行時(shí)仍然出現(xiàn)以下報(bào)錯(cuò),報(bào)錯(cuò)下標(biāo)越界:IndexOutOfBoundsException: Index 9 out of bounds for length 9

18:02:19.449 [http-nio-8007-exec-10] DEBUG c.t.c.c.d.GyUserWithdrawDao.listWihdraw - ==>  Preparing: SELECT gyw.*, ui.realname realname FROM `gy_user_withdraw` gyw inner join user_info ui on gyw.user_id = ui.userid LIMIT ? 
18:02:19.450 [http-nio-8007-exec-10] DEBUG c.t.c.c.d.GyUserWithdrawDao.listWihdraw - ==> Parameters: 10(Integer)
18:02:19.466 [http-nio-8007-exec-10] ERROR c.t.c.exception.ExceptionHandlerAdvice - 運(yùn)行異常
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IndexOutOfBoundsException: Index 9 out of bounds for length 9
### The error may exist in file [D:\CIMS\gyyh_2.3.3\cims_commons_db\target\classes\mybatis\mysql\GyUserWithdrawMapper.xml]
### The error may involve com.trusfort.cims.commons.dao.GyUserWithdrawDao.listWihdraw
### The error occurred while handling results
### SQL: SELECT gyw.*, ui.realname realname FROM `gy_user_withdraw` gyw inner join user_info ui on gyw.user_id = ui.userid LIMIT ?
### Cause: java.lang.IndexOutOfBoundsException: Index 9 out of bounds for length 9
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
    at com.sun.proxy.$Proxy172.selectList(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223)
    at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
    at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:144)
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
    at com.sun.proxy.$Proxy369.listWihdraw(Unknown Source)

錯(cuò)誤原因

很明顯不是SQL的問題,從日志來看SQL明顯沒有問題,而且我們的Mapper.xml中配置也沒有問題

<select id="listWihdraw" resultType="GyUserWithdraw">
    SELECT gyw.*, ui.realname realname FROM `gy_user_withdraw` gyw inner join user_info ui on gyw.user_id = ui.userid
</select>

那就只能從Mybatis執(zhí)行SQL后查詢結(jié)果到實(shí)體映射的角度出發(fā)來考慮了。

我們看一下我們的實(shí)體類源碼

@Data
@Builder(toBuilder = true)
public class GyUserWithdraw implements Serializable {
    private String id;
    private String userId;
    private String employeenum;
    private String statusBefore;
    private String statusAfter;
    private String syncResult;
    private Date createTime;
    private Date updateTime;
}

看著貌似是沒什么毛病,但鑒于我們此處偷懶使用了Lombok的插件,還是仔細(xì)考慮回想一下

我們一般寫數(shù)據(jù)庫實(shí)體類的時(shí)候,只要有字段定義和對應(yīng)的getter、setter方法就可以了

為何用了Lombok的@Data注解之后有問題了呢?

我們看一下編譯后的實(shí)體類,用IDEA查看一下class反編譯的結(jié)果

重點(diǎn)來了

我們會發(fā)現(xiàn)與原本不使用Lombok的實(shí)體類相比,該類只有一個(gè)全參數(shù)的構(gòu)造方法,而原本我們手寫實(shí)體類時(shí)只寫了getter和setter方法,所以編譯后會默認(rèn)帶一個(gè)無參構(gòu)造。

而上述使用Lombok的@Builder注解后,編譯后實(shí)體有全參數(shù)的構(gòu)造方法,那么編譯器就不會再默認(rèn)提供一個(gè)默認(rèn)的無參構(gòu)造。

所以問題可能就出現(xiàn)在這個(gè)無參構(gòu)造方法缺失上,mybatis在將查詢結(jié)果映射成實(shí)體時(shí)是通過無參構(gòu)造獲得一個(gè)實(shí)例,然后調(diào)用setter方法將值存入相應(yīng)字段的。

解決方案

我們可以使用Lombok注解@NoArgsConstructor@AllArgsConstructor,使編譯器編譯的時(shí)候提供出無參構(gòu)造。

在原實(shí)體上增加兩個(gè)注解即可,我們再重試就會發(fā)現(xiàn)SQL執(zhí)行正常了。

@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor

注意:

因?yàn)槲覀兪褂?code>@Builder注解,所以光添加一個(gè)@NoArgsConstructor,程序會編譯報(bào)錯(cuò)的,builder需要一個(gè)全參構(gòu)造,所以我們還得加上@AllArgsConstructor。

總結(jié)

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

相關(guān)文章

  • Java enum 對枚舉元素的賦值和取值方式

    Java enum 對枚舉元素的賦值和取值方式

    這篇文章主要介紹了Java enum 對枚舉元素的賦值和取值方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java synchronized從使用到底層鎖升級機(jī)制詳解

    Java synchronized從使用到底層鎖升級機(jī)制詳解

    本文深入解析Java中synchronized的底層機(jī)制與鎖升級過程,文章從基礎(chǔ)用法入手,區(qū)分實(shí)例鎖、類鎖和代碼塊鎖的使用場景及常見誤區(qū),感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Java多線程之線程安全問題詳細(xì)解析

    Java多線程之線程安全問題詳細(xì)解析

    這篇文章主要給大家介紹了關(guān)于Java多線程之線程安全問題的相關(guān)資料,Java多線程中線程安全問題是一個(gè)常見的問題,因?yàn)槎鄠€(gè)線程可能同時(shí)訪問共享的資源,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java中的this、super、final關(guān)鍵字詳解

    Java中的this、super、final關(guān)鍵字詳解

    這篇文章主要介紹了Java中的this、super、final關(guān)鍵字詳解,它在方法內(nèi)部使用,表示這個(gè)方法所屬對象的引用,它在構(gòu)造器內(nèi)部使用,表示該構(gòu)造器正在初始化的對象,this 可以調(diào)用類的屬性、方法和構(gòu)造器,需要的朋友可以參考下
    2023-09-09
  • Java算法之冒泡排序?qū)嵗a

    Java算法之冒泡排序?qū)嵗a

    今天小編就為大家分享一篇關(guān)于Java算法之冒泡排序?qū)嵗a,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java多線程父線程向子線程傳值問題及解決

    Java多線程父線程向子線程傳值問題及解決

    文章總結(jié)了5種解決父子之間數(shù)據(jù)傳遞困擾的解決方案,包括ThreadLocal+TaskDecorator、UserUtils、CustomTaskDecorator、ExecutorConfig、RequestContextHolder+TaskDecorator、MDC+TaskDecorator和InheritableThreadLocal
    2025-02-02
  • SpringBoot如何配置文件給bean賦值問題

    SpringBoot如何配置文件給bean賦值問題

    這篇文章主要介紹了SpringBoot如何配置文件給bean賦值問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • IDEA對使用了第三方依賴jar包的非Maven項(xiàng)目打jar包的問題(圖文詳解)

    IDEA對使用了第三方依賴jar包的非Maven項(xiàng)目打jar包的問題(圖文詳解)

    這篇文章主要介紹了IDEA對使用了第三方依賴jar包的非Maven項(xiàng)目打jar包的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot整合WebService服務(wù)的實(shí)現(xiàn)代碼

    SpringBoot整合WebService服務(wù)的實(shí)現(xiàn)代碼

    WebService是一個(gè)SOA(面向服務(wù)的編程)的架構(gòu),它是不依賴于語言,不依賴于平臺,可以實(shí)現(xiàn)不同的語言間的相互調(diào)用,通過Internet進(jìn)行基于Http協(xié)議的網(wǎng)絡(luò)應(yīng)用間的交互,這篇文章主要介紹了SpringBoot整合WebService服務(wù)的實(shí)例代碼,需要的朋友可以參考下
    2022-02-02
  • java中如何截取字符串最后一位

    java中如何截取字符串最后一位

    這篇文章主要介紹了java中如何截取字符串最后一位的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

广汉市| 随州市| 永胜县| 澄迈县| 藁城市| 临沭县| 灵武市| 南开区| 玛多县| 车致| 三门峡市| 石嘴山市| 泊头市| 宁海县| 濮阳市| 易门县| 本溪| 乌海市| 吕梁市| 昂仁县| 蓝田县| 西宁市| 凉山| 肥城市| 汤阴县| 福清市| 绍兴县| 乌拉特后旗| 赤城县| 张家口市| 左权县| 房产| 拉萨市| 大悟县| 五峰| 庆元县| 康平县| 胶南市| 宝山区| 晋州市| 鸡西市|