mybatis处理集合、循环、数组和in等语句的使用
2019獨角獸企業重金招聘Python工程師標準>>>
在Mybatis的xml配置中使用集合,主要是用到了foreach動態語句。
foreach的參數:
foreach元素的屬性主要有 item,index,collection,open,separator,close。
item表示集合中每一個元素進行迭代時的別名.
index指 定一個名字,用于表示在迭代過程中,每次迭代到的位置.
open表示該語句以什么開始,separator表示在每次進行迭代之間以什么符號作為分隔 符.
close表示以什么結束。
1. Mybatis生成select * from table where id in(1,2,...,n)語句的查詢
我們一般的做法是在方法的參數處指定傳入的參數名稱,在xml中使用的時候,集合的名稱要和方法的Param的名稱一致,這樣便于閱讀和理解,然后是在對應的xml文件中使用foreach循環。
java代碼如下:
public?abstract?List<Model>?findByIds(@Param("ids")List<Integer>?ids);對應的xml代碼如下:
select?*?from?table <where>id?in?<foreach?collection="ids"?item="item"?index="index"?open="("?separator=","?close=")">#{item}</foreach> </where>2.Mybatis保存多條記錄
我們同樣是通過foreach的方法來實現,這里我們巧妙的利用了sql的語法規則用Mybatis的foreach動態語句來處理。
java代碼:
public?abstract?void?saves(@Param("tables")List<Model>?tables);xml代碼:
insert?into?table(name,addtime)?values <foreach?collection="tables"?item="item"?index="index"?separator=",">??(#{item.name},#{item.addtime}) </foreach>以上方法Mybatis會幫我們進行sql注入攔截,Mybatis如果采用#{xxx}的形式設置參數,Mybatis會進行sql注入的過濾。如果采用的是${xxx},Mybatis不會進行sql注入過濾,而是直接將參入的內容輸出為sql語句。
轉載于:https://my.oschina.net/fallow5/blog/632317
總結
以上是生活随笔為你收集整理的mybatis处理集合、循环、数组和in等语句的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python (3):wxPython打
- 下一篇: 大话重构7:重构是一系列的等量变换