mybatis处理集合和循环数组问题
2019獨角獸企業重金招聘Python工程師標準>>>
? ?在使用foreach的時候最容易出錯的就是collection屬性,該屬性是必須指定的,在不同情況 下,該屬性的值是不一樣的,主要有一下3種情況:
1. ? ? 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list
2. ? ? 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array
3. ? ? 如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可以封裝成map,實際上如果你在傳入參數的時候,在breast里面也是會把它封裝成一個Map的,map的key就是參數名,所以這個時候collection屬性值就是傳入的List或array對象在自己封裝的map里面的key.
? ? 我采用mybatis直接將數組當作參數傳入總是出現錯誤,說找不到參數,也按照上述的條件一一嘗試結果還是不行,我想可能出現這個問題的原因是mybatis的版本問題。后來采用傳入一個實體,在實體里面定義數組的方法。然后操作,這樣就不出錯了。此方法雖為下冊,但也可以應付一些關鍵問題。
下面看看代碼把!
實體bean:
package com.huaat.weibo.vo;import java.io.Serializable;/*** 我的微博實體* @author jing.yue* @version 2012/07/17 1.0.0*/ public class MyWeibo implements Serializable {private static final long serialVersionUID = 754681127580984228L;private String[] fileNames;private String[] fileUrls;public String[] getFileNames() {return fileNames;}public void setFileNames(String[] fileNames) {this.fileNames = fileNames;}public String[] getFileUrls() {return fileUrls;}public void setFileUrls(String[] fileUrls) {this.fileUrls = fileUrls;}}下面為mybatis的配置文件[myWeibo為實體]:
<!-- 刪除微博 --><delete id="delMyWeibo" parameterType="myWeibo">delete from my_weibo where weibo_id in<foreach item="item" index="index" collection="fileUrls" open="(" separator="," close=")">#{item}</foreach></delete>解釋下foreach的參數:
foreach元素的屬性主要有 item,index,collection,open,separator,close。
item表示集合中每一個元素進行迭代時的別名.
index指 定一個名字,用于表示在迭代過程中,每次迭代到的位置.
open表示該語句以什么開始,separator表示在每次進行迭代之間以什么符號作為分隔 符.
close表示以什么結束.
至于調用這個方法的代碼:
/*** 刪除微博* @param myWeibo*/public abstract void delMyWeibo(MyWeibo myWeibo);這樣就解決這個問題了~
原文來自:https://www.52jingya.com/aid5.html
轉載于:https://my.oschina.net/castusz/blog/67828
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的mybatis处理集合和循环数组问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载] 七龙珠第一部——第003话 龟
- 下一篇: W3C中meta标签详解