mybatis處理集合和循環數組問題

   在使用foreach的時候最容易出錯的就是collection屬性,該屬性是必須指定的,在不一樣狀況 下,該屬性的值是不同的,主要有一下3種狀況:html

1.     若是傳入的是單參數且參數類型是一個List的時候,collection屬性值爲listjava

2.     若是傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值爲array數組

3.     若是傳入的參數是多個的時候,咱們就須要把它們封裝成一個Map了,固然單參數也能夠封裝成map,實際上若是你在傳入參數的時候,在breast裏面也是會把它封裝成一個Map的,map的key就是參數名,因此這個時候collection屬性值就是傳入的List或array對象在本身封裝的map裏面的key.mybatis

    我採用mybatis直接將數組看成參數傳入老是出現錯誤,說找不到參數,也按照上述的條件一一嘗試結果仍是不行,我想可能出現這個問題的緣由是mybatis的版本問題。後來採用傳入一個實體,在實體裏面定義數組的方法。而後操做,這樣就不出錯了。此方法雖爲下冊,但也能夠應付一些關鍵問題。this

下面看看代碼把!.net

實體bean:code

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爲實體]:htm

<!-- 刪除微博 -->
	<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。get

item表示集合中每個元素進行迭代時的別名.

index指 定一個名字,用於表示在迭代過程當中,每次迭代到的位置.

open表示該語句以什麼開始,separator表示在每次進行迭代之間以什麼符號做爲分隔 符.

close表示以什麼結束.

至於調用這個方法的代碼:

/**
	 * 刪除微博
	 * @param myWeibo
	 */
	public abstract void delMyWeibo(MyWeibo myWeibo);

這樣就解決這個問題了~

原文來自:https://www.52jingya.com/aid5.html

相關文章
相關標籤/搜索