ibatis 批量插入[类对象]到 oracle 数据库
来源:互联网 发布:美橙互联怎么解析域名 编辑:程序博客网 时间:2024/05/28 23:09
ibatis 批量插入[类对象]到 oracle 数据库
分类: JAVA技术 2013-08-13 18:07 202人阅读 评论(0)收藏 举报
1.实现目标:
a)使用ibatis实现批量插入数据到oracle数据库
b)插入的是类对象数据列表
c)插入的同时,需要使用数据库sequence生成对象的唯一标识
2.实现过程:
-> 使用<iterate>标签,对它包裹的内容进行迭代;conjunction=" ",迭代内容的连接符,这里使用空格进行连接。
-> 因为传递的入参是list,且list内容是类对象,所以通过 #list[].na_name# 方式取类对象的属性。其中 'list' 无头紧要,可以换成其它任意字符;但是 [] 这两个字符不能舍弃,主要是起迭代作用;.na_name 是引用类对象属性。
a)使用ibatis实现批量插入数据到oracle数据库
b)插入的是类对象数据列表
c)插入的同时,需要使用数据库sequence生成对象的唯一标识
2.实现过程:
a)ibatis的xml文件配置详解
- <insertid="insertSourceInfoList"parameterClass="java.util.List">
- <![CDATA[
- INSERT ALL
- ]]>
- <iterateconjunction=" ">
- INTO net_addr_main_info
- (na_id,
- na_name,
- na_status_id,
- create_date,
- status_date,
- src_na_id,
- remark)
- VALUES
- (F_GETSEQ(#list[].timestamp#),
- #list[].na_name#,
- 10,
- sysdate,
- sysdate,
- #list[].src_na_id#,
- #list[].remark#)
- </iterate>
- <![CDATA[
- SELECT * FROM dual
- ]]>
- </insert>
<insert id="insertSourceInfoList" parameterClass="java.util.List"><![CDATA[INSERT ALL]]><iterate conjunction=" ">INTO net_addr_main_info (na_id, na_name, na_status_id, create_date, status_date, src_na_id, remark)VALUES (F_GETSEQ(#list[].timestamp#), #list[].na_name#, 10, sysdate, sysdate, #list[].src_na_id#, #list[].remark#)</iterate><![CDATA[SELECT * FROM dual]]></insert>-> parameterClass="java.util.List" 传递需要保存的对象列表;
-> insert all 语法简介: insert all into net_addr_main_info (na_id, na_name) values (1000, 'test1')
into net_addr_main_info (na_id, na_name) values (1001, 'test2')
select * from dual;
insert all 可以实现同时把数据插入到多个表中,当前功能实现,是需要把数据列表插入到同一个表。但是ibatis的配置文件中只支持执行一句完整的sql,因此通过insert all语句来实现同时多条数据入表;
-> F_GETSEQ(P_ID IN NUMBER)是一个数据库函数,功能是取出sequence的值。
因为,ibatis在生成 sql 语句的时候,只会取一次序列值,因此,不能在这个地方使用 sequence.nextval 取值,因此通过这样的数据库函数,取出序列值。函数的入参,是一个任意唯一值。在调用的时候,做为入参传递进去。
实现:
- CREATE ORREPLACE FUNCTION F_GETSEQ(P_IDIN NUMBER) RETURN NUMBER
- DETERMINISTIC AS
- V_SEQ NUMBER;
- BEGIN
- SELECT SEQ_NA_ID.NEXTVALINTO V_SEQ FROM DUAL;
- RETURN V_SEQ;
- END;
CREATE OR REPLACE FUNCTION F_GETSEQ(P_ID IN NUMBER) RETURN NUMBER DETERMINISTIC AS V_SEQ NUMBER;BEGIN SELECT SEQ_NA_ID.NEXTVAL INTO V_SEQ FROM DUAL; RETURN V_SEQ;END;-> select * from dual, 是insert all语法的一部分,因此不能省略。
-> 使用<iterate>标签,对它包裹的内容进行迭代;conjunction=" ",迭代内容的连接符,这里使用空格进行连接。
-> 因为传递的入参是list,且list内容是类对象,所以通过 #list[].na_name# 方式取类对象的属性。其中 'list' 无头紧要,可以换成其它任意字符;但是 [] 这两个字符不能舍弃,主要是起迭代作用;.na_name 是引用类对象属性。
b)JAVA类调用,省略。
- ibatis 批量插入[类对象]到 oracle 数据库
- ibatis 批量插入[类对象]到 oracle 数据库
- iBATIS批量插入数据到数据库
- ibatis批量插入对象
- ibatis批量插入对象list
- mybatis批量插入数据到oracle数据库
- 批量插入oracle数据库
- ibatis对oracle数据库的批量更新和批量插入的操作
- ibatis对oracle数据库的批量更新和批量插入的操作
- ibatis- 批量插入(对象转map)
- ibatis 搭配oracle做批量插入小结
- Java实现Mybatis将数据批量插入到Oracle数据库
- DataTable批量插入到数据库
- 批量插入数据到数据库
- mybatis批量插入oracle数据库
- mybatis批量插入oracle数据库
- Mybatis批量插入Oracle数据库
- ibatis批量插入实例
- java之回调函数
- 国内搞机器学习和数据挖掘的大牛
- IP源路由原理和作用
- vim环境设置和自动对齐
- MFC——CTreeCtrl数据的处理:如何将数据和逻辑分开?
- ibatis 批量插入[类对象]到 oracle 数据库
- OCP-1Z0-053-V12.02-186题
- VM虚拟机如何和主机相连
- 结构体变量分析
- TCP长连接与短连接的区别
- 清空Qtablewiget 表格的内容
- AlarmManager的使用
- scrollview与gridview及listview嵌套冲突问题
- Boost.Asio性能测试