mybatis foreach的疑難雜症

2021-08-15 00:21:00 字數 853 閱讀 3577

背景

今天寫**的時候,寫了一段sql,如下所示:

select

product_name,product_type,subscription_id,product_period,subscription_begin,interest_begin,interest_end,subscription_status,subscription_principle,subscription_time

from bm_subscription a left join bm_product b on a.product_id =

b.product_id

where 1=1

and a.member_id = #

and b.product_type = #

and a.subscription_status in

#

通過foreach對認購狀態的不斷篩選,取出結果。執行,發現拋了乙個異常:
org.apache.ibatis.reflection.reflectionexception: there is no getter for property named '__frch_status_0' in 'class
解決

對foreach**段進行修改,如下所示:

'$'  

執行,成功取出資料。

原因分析

經**驗證,mybatis傳入乙個list使用#無問題,但是傳入乙個物件,物件裡面有list就只能使用$。

mybatis foreach標籤的使用

下面是foreach標籤的各個屬性 屬性描述 collection 表示迭代集合的名稱,可以使用 param註解指定,如下圖所示 該引數為必選 item 表示本次迭代獲取的元素,若collection為list set或者陣列,則表示其中的元素 若collection為map,則代表key valu...

Mybatis foreach 效能問題

這裡先不考慮使用 in 好不好,如何去優化 in,如何使用 exists 或 inner join 進行代替等,這裡就只是考慮使用了 in 語句,且使用了 mybatis 的 foreach 語句進行優化,其實 foreach 的優化很簡單,就是把 in 後面的語句在 裡面拼接好,在配置檔案中直接通...

mybatis foreach 用法總結

1.findbyids listids 傳入引數為單一list引數時的寫法 2.findbyids integer ids 傳入引數為單一陣列時的寫法 3.search integer ids,string title 傳入引數為多個型別的查詢條件時 mapparams new hashmap pa...