[英]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.