簡體   English   中英

如何在mybatis的mapper界面中編寫foreach循環以進行更新查詢

[英]how to write foreach loop for update query in mapper interface in mybatis

我在使用mybatis的映射器界面中有一個更新查詢

 final String UPDATE ="update table_addresses "
                            + "set postCode= #{postCode}"
                            + "where id in"
                            + "<foreach item='item' index='index' 
                               collection='addressId' "
                            + "open='(' separator=',' close=')'>  #{item} 
                 </foreach>";
@Update(UPDATE)
public int updateInformation(@Param("postCode") String postCode , 
@Param("addressId") List<AddressID> addressId);

我的AddressId類包含int類型的addressId:

AddressId {
private int addressId;
} 

現在,我正在調用mapper接口的方法。我正在發送一個字符串postCode和對象列表地址。

我遇到以下錯誤原因:org.mybatis.spring.MyBatisSystemException:嵌套異常是org.apache.ibatis.binding.BindingException:找不到參數“ item”。 可用的參數是[param1,param2,postCode,addressId]。這里我在做什么錯。foreach循環的正確語法是什么,我可以在其中傳遞包含清單的addressId。

用於復雜的sql語句。 我更喜歡使用SelectBuilder / UpdateBuilder

參見本頁最后部分mybatis-java-api

如果在注解定義的查詢中使用XML標記,請嘗試將整個SQL代碼包裝在<script>標記中,例如String SQL = "<script>(SQL goes here)</script>" MyBatis可能看不到您的#{item},因為它對此一無所知(它將全部視為SQL)。

但是,正如Dean Xu所說的那樣,對於更復雜的查詢, sql builder更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM