記錄一次Mybatis使用中遇到的BUG

2021-10-07 15:06:43 字數 4223 閱讀 7520

​ 今天在開發過程中,由於業務需求,需要前台同時輸入多個值進行模糊查詢,所以我預想將輸入的值,以陣列形式傳入,並在 mybatis 的 xml 檔案中,用foreach標籤進行遍歷。在遍歷過程**現了問題,後台報了乙個 mybatis 的錯誤。錯誤如下所示:

nested exception is org.apache.ibatis.builder.builderexception: error evaluating expression 'pagedata.butxt'.  return value (3333) was not iterable.
​ 翻譯過來的意思大概就是,pagedata.butxt獲取到的是值,而不是 collection ,從而無法進行迭代。。

​ 遇到這個報錯,我的第一反應當然就是檢視自己的**了。 (

"/comprehensivereport"

)public result list

(page page)

//將 pagedata 物件存放到 page 物件中

page.

setpagedata

(pd)

;//調取 service 方法。

list

varlist = comprehensivereportservice.

list

(page)

;//將結果存入 map 並返回

​ 就在自我懷疑時,看到了救命稻草(乙個錯誤貼),上面寫著出現錯誤的原因是傳入的非 list 資料,所以我就想將陣列轉換成 list 試一下呢?

​ 修改我 controller 中的**,修改後**如下:

("/comprehensivereport"

)public result list

(page page)

//將 pagedata 物件存放到 page 物件中

page.

setpagedata

(pd)

;//調取 service 方法。

list

varlist = comprehensivereportservice.

list

(page)

;//將結果存入 map 並返回

​ 修改 xml **如下:

"datalistpage"

parametertype

="page"

resulttype

="com.xiye.common.entity.page.pagedata"

>

select t.bukrs,

t.butxt,

t.matnr,

t.maktx,

t.amount,

t.zpgzj,

round(case t.zpgzj

when '0' then

0else

nvl2(t.zpgzj, (t.amount - t.zpgzj) / t.zpgzj, 0)

end,

2) * 100 yjl

from operate_comprehensive_report t

>

test

="pagedata.bukrs != null and pagedata.bukrs.size > 0 "

>

item

="item"

index

="index"

collection

="pagedata.bukrs"

open

="and ("

separator

="or"

close

=")"

>

t.bukrs like concat(concat('%', #),'%')

foreach

>

if>

where

>

select

>

​ 啟動專案進行測試,結果是剛才的錯誤沒有了但又出現了乙個新的錯誤,錯誤如下:

org.apache.ibatis.reflection.reflectionexception: there is no getter for property named '__frch_item_0' in 'class com.***x'
​ 經過此次 bug ,感覺自己對 mybatis 了解還是甚少,而且上面雖然把問題解決了,但不知道其原因,日後努力學習找出此次出現 bug 的原因。

乙個在碼農道路上孤獨行走的人

記錄第一次部署mybatis

在學了mybatis後想加深一下印象,就把之前的乙個專案部署了mybatis框架,部署mybatis框架之後專案以前的運算元據的dbhelp就可以刪除了。然後記錄一下部署的時候到網上查的一些細節問題 1.對映檔案中的動態sql標籤如if when等使用引數時不需要用 包裹 2.獲取引數有兩種方式,一...

記錄一次oracle使用記錄

使用oracle資料庫的專案到我這邊,需要修改,咱雖然 學過 oracle,但那畢竟已經過去了。哈哈。使用database configuration assistant 建立資料庫,建立快完的時候,說我沒有監聽啥的,然後 通過 net manager 建立了,qizhong1 其中選中的那個就是建...

記一次RecyclerView使用過程遇到的坑

由於重構模組,將原本直屬與activity布局檔案中的recyclerview,遷移到fragment的布局檔案中,基本是從activity中copy到fragment中,但是,坑來了 fragment中的recyclerview突然無法顯示其中的列表項了。內心的感受是崩潰的 單步除錯,一步步跟蹤,...