mybatis處理集合、迴圈、陣列和in等語句的使用
在mybatis 批量執行sql時,報錯 java.util.list can't find. 原因:collection 屬性定義錯誤。
List a=ArrayList.asList(str); sql 遍歷資料a, a為一個list,所以 collection 屬性要定義成 list;
String
[] ids=str.split(","); sql遍歷資料ids,ids 是一個數組,所以collection屬性要定義成 array;
在使用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:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package com.huaat.weibo.vo;
import java.io.Serializable;
/**
*
我的微博實體 *
<a href="http://my.oschina.net/arthor" target="_blank" rel="nofollow">@author</a> 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
|