标签:
在实际项目中,我们一般都会用到批量insert、delete、update
等操作,由于使用频率还是蛮高的,这里就做个简单的记录,供以后学习和参考.
批量insert
在数据库中,批量插入可以是多条insert into tableName values(?,?,?...);
或者一条insert into tableName values (?,?,?...),(?,?,?...),(?,?,?...)....
那么我们在使用mybatis时,xml就可以如下写批量操作:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<insert id ="INSERT-CODE-BATCH" parameterType="java.util.List" > insert into redeem_code (bach_id, code, type, facevalue,create_user,create_time) values <foreach collection ="list" item="reddemCode" index= "index" separator =","> ( #{reddemCode.batchId}, #{reddemCode.code}, #{reddemCode.type}, #{reddemCode.facevalue}, #{reddemCode.createUser}, #{reddemCode.createTime} ) </foreach > </insert >
|
标签说明:
- foreach元素的属性主要有 item,index,collection,open,separator,close。
- item表示集合中每一个元素进行迭代时的别名
- index指定一个名字,用于表示在迭代过程中,每次迭代到的位置
- open表示该语句以什么开始
- separator表示在每次进行迭代之间以什么符号作为分隔符
- close表示以什么结束
- collection属性为必填属性! 可以是List,Array,Map.
注意
这里的foreach
标签没有包含insert into tableName
,所以最后实际执行的是一条SQL语句:
insert into redeem_code (batch_id, code, type, facevalue,create_user,create_time)
values
(?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? ),(?,?,?,?,?,? )
推荐mybatis博客专栏
批量update
mybatis的批量重点就是怎么去将sql拼接成可以直接在数据库执行的sql,这里再记录下以ibatis的批量操作,只要会了一个,其他也都不是问题了.
1 2 3 4 5 6 7 8 9 10
|
<update id="WHOLESALE-UPDATE-REBATE-CONFIG-BY-PRODUCTCODE" > UPDATE rebate_config SET rebate_type = ‘BY_RATE‘,rebate_config_value = #rebateConfigValue# WHERE <iterate property="list" conjunction="or" open="(" close=")"> product_code =#list[]# </iterate> </update>
|
标签说明:
- prepend 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
- property 类型为 java.util.List 的用于遍历的元素(必选)
- open 整个遍历内容体开始的字符串,用于定义括号(可选)
- close 整个遍历内容体结束的字符串,用于定义括号(可选)
- conjunction 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选)
注意
-
我这里传递过来的参数是一个Map<string,object>
1 2 3
|
Map<String, Object> conditions = new HashMap<String, Object>(); conditions.put("rebateConfigValue", rebateValue);
|
-
使用时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将List输出成String
ibatis官方文档说明
ibatis学习网站
mybatis批量操作-xml方式
标签:
原文地址:http://www.cnblogs.com/admol/p/5082121.html