oracle 在xml中批量插入,批量修改及多组条件查询

最近公司用ibatis开发项目,本来可以用存储过程处理批量插入,批量修改及多组条件查询;但由于使用模块相对较小,暂时就在xml中配置,以前没有在xml做过类似处理,有必要记录一下;好了,代码如下:

<!-- 批量插入 -->
        <insert id="saveNotificationPushInfo" parameterClass="java.util.List">
            <![CDATA[INSERT ALL]]>
                <iterate conjunction="" >
                into notification_push_info(
                    push_log_no,
                    business_book,
                    employee_id,
                    notification_no,
                    push_flag,
                    push_time
                    )values
                    (
                    bep_seq_package.fetch_seq(‘NOTIFICATION_PUSH_INFO‘,‘PUSH_LOG_NO‘,‘BEPDATA‘),
                    #list[].businessBook:varchar#,
                    #list[].employeeId:varchar#,
                    #list[].notificationNo:varchar#,
                    #list[].pushFlag:varchar#,
                    sysdate
                )
                </iterate>
            <![CDATA[SELECT * FROM dual]]>
        </insert>

        <!-- 多组条件查询-->
        <select id="getSameNotificationList" parameterClass="java.util.List" resultClass="java.util.HashMap">
                select distinct employee_id "employeeId",
                                notification_no "notificationNo"
                from notification_push_info npi
                    where npi.invalid_flag = ‘N‘
            <iterate conjunction="or" open="and" close="">
                    npi.employee_id = #notiList[].employeeId#
                    and npi.business_book = #notiList[].businessBook#
                    and npi.notification_no = #notiList[].notificationNo#
            </iterate>
        </select>

        <!-- 批量修改-->
        <update id="updateNotiList" parameterClass="java.util.List">
            begin
            <iterate conjunction="">
                update notification_push_info set
                push_flag = #list[].FLAG#,
                push_time = sysdate
                where invalid_flag = ‘N‘
                and employee_id = #list[].employeeId#
                and notification_no = #notiList[].notificationNo#;
            </iterate>
            end;
        </update>

如有问题,请大家指出来,谢谢!

原文地址:https://www.cnblogs.com/lidelin/p/8270819.html

时间: 2024-10-10 00:46:37

oracle 在xml中批量插入,批量修改及多组条件查询的相关文章

oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号?

Oracle 语句中"||"代表什么啊? oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号? 排序的话,用order by来处理即可.比如:cola123a234b999b335select * from tablename order by col; 结果就是 cola123a234b335b999 如果按倒序排列:select * from tablename order by col desc; 结果就是 colb999b335a234a123 其他回答 先创

SQL Server 2012中快速插入批量数据的示例及疑惑

SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以供有兴趣的同学参考. 附:我的测试环境为:SQL Server 2012,命名实例 Microsoft SQL Server 2012 - 11.0.2100.60 (Intel X86) Feb 10 2012 19:13:17 Copyright (c) Microsoft Corporatio

SQL批量插入、修改

1. 批量插入 insert into table_A  ( ORDER_CODE, PAYMENT_CODE) values <foreach item="item" index="index" collection="list" separator=","> (#{item.ORDER_CODE},if(#{item.PAYMENT_CODE}='',NULL,#{item.PAYMENT_CODE})) 2.

一条insert语句批量插入多条记录 AND 多条件游标更新 变CASE WHEN更新法提高速度

一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons (id_p, lastname , firstName, city ) values(204,'haha' , 'deng' , 'shenzhen'); (如上,仅插入了一条记录) 怎样一次insert插入多条记录呢? 使用示例: insert into persons (id_p, lastname , firstName, city ) values

Mysql慢查询开启和查看 ,存储过程批量插入1000万条记录进行慢查询测试

首先登陆进入Mysql命令行  执行sql      show variables like 'slow_query%';  结果为OFF 说明还未开启慢查询 执行sql     show variables like 'long_query_time';  可以看到具体的慢查询 ""时限" 我们先开启慢查询 执行sql set global slow_query_log='ON'; 这是再去查询一下(show variables like 'slow_query%';)发现

oracle解析xml完成版第二次修改

其实XML字符串就好像是ORACLE中的外部表,因此Oracle对 解析XML字符串一些规则要求非常严格.XML字符串提供的数据就是一张表,所以Oracle必须提供跟 xml数据一致的列头 示例一 SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0" encoding="gb2312" ?>&xml') AS B COL

sql server中的大数据的批量操作(批量插入,批量删除)

首先我们建立一个测试用员工表 ---创建一个测试的员工表--- create table Employee( EmployeeNo int primary key, --员工编号 EmployeeName nvarchar(50) null, --员工名称 CreateUser nvarchar(50) null, --创建人 CreateDate datetime null, --创建时间 ) 执行后结果: 那么假如我们要批量插入10000条数据,应该怎么办? 这里有四种方法(普通循环,事务循

MyBatis动态批量插入、更新Mysql数据库的通用实现方案

一.业务背景 由于需要从A数据库提取大量数据同步到B系统,采用了tomikos+jta进行分布式事务管理,先将系统数据源切换到数据提供方,将需要同步的数据查询出来,然后再将系统数据源切换到数据接收方,进行批量的插入和更新操作, 关于数据源的切换可以参考之前的文章<spring+springMVC+Mybatis架构下采用AbstractRoutingDataSource.atomikos.JTA实现多数据源灵活切换以及分布式事务管理> 二.批量插入的具体实现 1.查询需要同步的数据: @Aut

MyBatis批量插入数据

在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来. 实体类TrainRecord结构如下: public class TrainRecord implements Serializable { private static final long serialVersionUID = -12069604621179