- 浏览: 7851975 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
比如,经常遇到的情况是,要把表A中的符合条件的数据全部取出来,形成一个结果集,
然后针对结果集中的每一条数据,循环插入到数据表B中去,除了传统的在JAVA代码中
FOR循环来做外,在ibatis 2中,还增加了iterate标签,可以用来生成循环要执行的语句,介绍如下:
<iterate
property="" /*可选,
从传入的参数集合中使用属性名去获取值,
这个必须是一个List类型,
否则会出现OutofRangeException,
通常是参数使用java.util.Map时才使用,
如果传入的参数本身是一个java.util.List, 不能只用这个属性.
conjunction="" /*可选,
iterate可以看作是一个循环,
这个属性指定每一次循环结束后添加的符号,
比如使每次循环是OR的, 则设置这个属性为OR*/
open="" /*可选, 循环的开始符号*/
close="" /*可选, 循环的结束符号*/
prepend="" /*可选, 加在open指定的符号之前的符号*/
>
</iterate>
例子:
<iterate prepend=”AND” property=”userNameList”
open=”(” close=”)” conjunction=”OR”>
username=#userNameList[]#
</iterate>
这个时候,会生成如下形式的语句:
(username=xxx1 or username=xxx2 or username=xxx3)
因为open,close中指定了括号,conjunction则指定了分割是用or,
又如:
id in
<iterate prepend="" property="ids" open="(" close=")" conjunction="," >
#ids[]#
</iterate>
生成为:
id in (xx1,xx2,xx3,.....),
注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,
以防解析器简单地将List输出成String。
再来看几个例子:
1) 删除的:
<delete id="delete">
delete from t_table where key in
<iterate property="keys" conjunction="," open="(" close=")">
#keys[]#
</iterate>
</delete>
2 ) update:
如果传用的参数是自己定义的类,如:
<update id="sqlMap" parameterClass="example.test">
UPDATE TBL_COMPANY
SET ADDRESS = #address#
WHERE COMPANY_ID IN
<iterate conjunction="," open="(" close=")" property="companyIds" >
#companyIds[]#
</iterate>
</update>
生成Sql语句: UPDATE TBL_COMPANY SET ADDRESS='address' WHERE COMPANY_ID IN ( 45, 50, 70)
其中:companyIds是example.test类中的list属性。
3) 批量插入,oracle中可以用insert all into,比如:
<insert id="insertintoragroupra" parameterClass="map">
insert all
<iterate conjunction=" " property="ragrouppreinsert">
into GROUP_ASSETRA
(RISKID, GROUPID,GROUPNAME,AV,RALISTID)
values
(
F_GETSEQ(),#ragrouppreinsert[].groupId#,#ragrouppreinsert[].groupname#,#ragrouppreinsert[].av#,
#ralistId#
)
</iterate>
select * from dual
</insert>
注意:比如这里parameterClass="map"中,表明传入的是一个MAP,这个MAP中
可以包含内容很丰富的东西了,比如:
map.put("ragrouppreinsert",list) //这里ragrouppreinsert"存放的
是一个LIST结果集了
map.put("ralistId",ralistId) //这里另外设置一个要批量增加到group_assetra表中的数据
注意在上面的语句中,因为要将结果集合list中的每一条记录对应的字段插入到
GROUP_ASSETRA中,所以要使用#ragrouppreinsert[].groupId#的写法,
而把map中的ralistId插进去,则只需要#ralistId#就可以了,这样其实就是
插入到group_assetra表中的每一个ralistid字段都是相同的值了
F_GETSEQ()是一个函数,获得GROUP_ASSETRA表中的每次的序列,
具体其中遇到的问题,参考不错的一篇讲oracle insert all into的文:
http://yangtingkun.itpub.net/post/468/188133
然后针对结果集中的每一条数据,循环插入到数据表B中去,除了传统的在JAVA代码中
FOR循环来做外,在ibatis 2中,还增加了iterate标签,可以用来生成循环要执行的语句,介绍如下:
<iterate
property="" /*可选,
从传入的参数集合中使用属性名去获取值,
这个必须是一个List类型,
否则会出现OutofRangeException,
通常是参数使用java.util.Map时才使用,
如果传入的参数本身是一个java.util.List, 不能只用这个属性.
conjunction="" /*可选,
iterate可以看作是一个循环,
这个属性指定每一次循环结束后添加的符号,
比如使每次循环是OR的, 则设置这个属性为OR*/
open="" /*可选, 循环的开始符号*/
close="" /*可选, 循环的结束符号*/
prepend="" /*可选, 加在open指定的符号之前的符号*/
>
</iterate>
例子:
<iterate prepend=”AND” property=”userNameList”
open=”(” close=”)” conjunction=”OR”>
username=#userNameList[]#
</iterate>
这个时候,会生成如下形式的语句:
(username=xxx1 or username=xxx2 or username=xxx3)
因为open,close中指定了括号,conjunction则指定了分割是用or,
又如:
id in
<iterate prepend="" property="ids" open="(" close=")" conjunction="," >
#ids[]#
</iterate>
生成为:
id in (xx1,xx2,xx3,.....),
注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,
以防解析器简单地将List输出成String。
再来看几个例子:
1) 删除的:
<delete id="delete">
delete from t_table where key in
<iterate property="keys" conjunction="," open="(" close=")">
#keys[]#
</iterate>
</delete>
2 ) update:
如果传用的参数是自己定义的类,如:
<update id="sqlMap" parameterClass="example.test">
UPDATE TBL_COMPANY
SET ADDRESS = #address#
WHERE COMPANY_ID IN
<iterate conjunction="," open="(" close=")" property="companyIds" >
#companyIds[]#
</iterate>
</update>
生成Sql语句: UPDATE TBL_COMPANY SET ADDRESS='address' WHERE COMPANY_ID IN ( 45, 50, 70)
其中:companyIds是example.test类中的list属性。
3) 批量插入,oracle中可以用insert all into,比如:
<insert id="insertintoragroupra" parameterClass="map">
insert all
<iterate conjunction=" " property="ragrouppreinsert">
into GROUP_ASSETRA
(RISKID, GROUPID,GROUPNAME,AV,RALISTID)
values
(
F_GETSEQ(),#ragrouppreinsert[].groupId#,#ragrouppreinsert[].groupname#,#ragrouppreinsert[].av#,
#ralistId#
)
</iterate>
select * from dual
</insert>
注意:比如这里parameterClass="map"中,表明传入的是一个MAP,这个MAP中
可以包含内容很丰富的东西了,比如:
map.put("ragrouppreinsert",list) //这里ragrouppreinsert"存放的
是一个LIST结果集了
map.put("ralistId",ralistId) //这里另外设置一个要批量增加到group_assetra表中的数据
注意在上面的语句中,因为要将结果集合list中的每一条记录对应的字段插入到
GROUP_ASSETRA中,所以要使用#ragrouppreinsert[].groupId#的写法,
而把map中的ralistId插进去,则只需要#ralistId#就可以了,这样其实就是
插入到group_assetra表中的每一个ralistid字段都是相同的值了
F_GETSEQ()是一个函数,获得GROUP_ASSETRA表中的每次的序列,
具体其中遇到的问题,参考不错的一篇讲oracle insert all into的文:
http://yangtingkun.itpub.net/post/468/188133
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1477方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 1965前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3411info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2183import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 446https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 628public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 551https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 621https://mp.weixin.qq.com/s/KeFJ ... -
内部类小结
2018-06-06 10:25 394https://mp.weixin.qq.com/s/hErv ... -
JVM虚拟机小结1
2018-06-04 20:43 4611 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3038微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 553https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1773什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 907本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1262原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 804public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 617在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 878-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 705一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1852介绍个不错的RESTFUL MOCK的工具wiremock,地 ...
相关推荐
通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...
ibatis 读取oracle clob类型
一个Ibatis。net 的应用事例 数据库为oracle 用vs2008 导入即可使用。
ibatis+oracle简单实例,其中包括ibatis jar包以及oracle驱动包
ibatis调用oracle存储过程分页
最近遇到需要批量update数据的问题,一开始用了一个for循环去update,数据量大的时候效率很低。原因是for循环每次update一条语句,都是一次连接...在google上找了一遍,发现ibatis里有对批量update的支持,挺好的东西。
ibatis调用oracle存储过程
ibatis oracle ibatis-2.3.3.jar ojdbc14.jar ibatis连接oracle所需的jar包
NULL 博文链接:https://vbtboy.iteye.com/blog/831099
Ibatis调用Oracle存储过程,返回自定义的类型。
今天小编就为大家分享一篇关于ibatis结合oracle批量插入三种方法的测评,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
struts2+spring+ibatis+oracle+分页搜索+上传附件实例!完整版!
maven spring struts ibatis oracle框架整合,
strust2+spring3+ibatis2 +oracle10g 完整整合框架,只要换个数据库连接和表名就可以运行,不像那些王八蛋骗人的,绝对可用
spring struts2 ibatis整合,sha1加密,oracle数据库。myeclipse直接导入即可。
ibatis学习总结,oracle 学习总结,大数据量处理
spring+ibatis+oracle分页缓存源码
包含了ibatis及jdbc的驱动,需要的可以下载
通过foreach实现ibatis的批量插入
ibatis 批量 增删改查