在ibatis2.3.6中使用iterate拼接oracle merge函数
来源:互联网 发布:北京网络职业学院贵吗? 编辑:程序博客网 时间:2024/05/16 13:45
这几天项目中有这样的需要,有一批数据需要进行批处理,并且有些数据数据表中已经存在。这种数据修改或添加自然想到了oracle数据库的函数merge;而且要实现批处理,因为使用的事ibatis所以想到用iterate(高版本的mybatis可以是用foreach,没有进行测试。同学们可以自己试试)。下面是代码,亲测没有问题:
<update id="test" parameterClass="map">merge into table ausing <dynamic> (select * from (<iterate open="" close="" conjunction=" union " property="list"> select #list[].a# a, #list[].b# b, #list[].c# c from dual </iterate>)) </dynamic> b on (a.a= b.a) when not matched then --如果在新的伪表中找不到与旧表的关联执行insert insert (a.a, a.b, a.c) --如果旧表的字段和伪表的字段完全一样,则可以省去制定列 values (b.a, b.b, b.c) when matched then --如果找到关联进行update update set a.b=b.b, a.c=b.c -- 切记这里不要写关联字段,因为关联字段已经进行判断,这里不需要修改</update>
其中property中的list为传入的参数map中定义的集合名称。传入的list集合数据如下:
//测试集合数据List<ObjectA> list = new ArrayList<ObjectA>();ObjectA o1 = new ObjectA();o1.setA("a");o1.setA("b");o1.setA("c");list.add(o1);ObjectA o2 = new ObjectA();o2.setA("a");o2.setA("b");o2.setA("c");list.add(o2);
以上为在ibatis基础上使用iterate实现动态拼接merge函数的过程。其中最需要注意的事merge中伪表的使用。如果merge函数不太熟悉可以google一下这个函数,非常好用。而且这样做批处理还可以省去原子性事物的判断。这个语句如果有一条数据插入失败则会全部回滚。
0 0
- 在ibatis2.3.6中使用iterate拼接oracle merge函数
- merge into在Oracle中怎么使用
- oracle中merge使用
- Oracle中Merge into使用
- oracle中大字符串拼接函数
- oracle拼接字符串处理,wm_contact函数使用
- oracle 字符串数据拼接函数使用
- ibatis中iterate的使用
- Ibatis中iterate的使用
- mysql 中使用 concat 函数 拼接字符串
- oracle 字符串拼接函数
- oracle字符串拼接函数
- oracle添加拼接函数
- Oracle 避免在查询中使用函数
- oracle 之在查询中使用函数
- Oracle在查询中使用函数
- Oracle中merge into的使用
- Oracle中merge into的使用
- 事务的传播行为(讲得比较好)
- R 分词记录
- 使用phpQuery 抓取HTML 页面内容
- Android-RecylerView初识
- 一个APP应用产品该如何留住用户
- 在ibatis2.3.6中使用iterate拼接oracle merge函数
- hdu 2024 C语言合法标识符
- java多线程-线程同步
- SQLServer相关
- 【日常打表 谢谢支持】HRBUST OJ 1264杨辉三角(一)
- PCA人脸识别
- Chisel Tutorial(二)——Chisel的数据类型
- 油量监控
- 编号为1,2,3,4.......n的一群人沿顺时针方向围绕一圈的问题