首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

ibatis 参数替数组

2012-08-11 
ibatis 参数为数组!-- 快速插入Demo --insert idsendMailFast parameterparameteropen( close)

ibatis 参数为数组

<!-- 快速插入Demo --><insert id="sendMailFast" parameterparameteropen="(" close=")">#value[]#</iterate></delete>

?这个写法验证无错,但是还是不太明白这个#value[]#,有时上网说是要写成这样:

用迭代来实现,用parameterClass?来接收然后通过<iterate>遍历整个集合

Iterate的属性:
prepend?-?可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
property?-?类型为java.util.List的用于遍历的元素(必选)
open?-?整个遍历内容体开始的字符串,用于定义括号(可选)
close?-整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction?-?每次遍历内容之间的字符串,用于定义AND或OR(可选)
<iterate>?遍?历类型为java.util.List的元素。

例子:?

User.xml

<select?id="getUser"?parameterClass="java.util.Map"?resultClass="userModel">

<![CDATA[?select * from userinfo WHERE (userid in

]]>

??<iterate?property="personList"?open="("?close=")"?conjunction=",">

????#personList[].userId#

<!--$personList[].userId$-->

???????????</iterate>

<![CDATA[

)

]]>

</select>

注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将?List输出成String。

(#)?使用的是PreparedStatement?机制,生成的SQL字符串中含有很多?,这些?会被动态的添加参数进去查询

($)?中的变量好比字符串直接替换。

Dao.java

public UserModel getUser(UserModel userModel) throws SQLException {??????????????????????

Map<String, Object> map = new HashMap<String, Object>();

List<UserModel> list = new ArrayList<UserModel>();

UserModel userModel1 = new UserModel();

userModel1.setUserId("1");

list.add(userModel1);

UserModel userModel2 = new UserModel();

userModel2.setUserId("lsw");?????????????????????????????????

list.add(userModel2);????

map.put("personList", list);

List sqlUserModelList = getSqlMapClientTemplate().queryForList("getUser", map);

UserModel sqlUserModel = new UserModel();?????????????????????

return sqlUserModel;????}

热点排行
Bad Request.