需求:批量插入数据,并返回每条数据的主键(序列),因为这里是采用序列生成唯一的主键的,

其实oracle批量 插入操作有几种,网上百度都是有相关资源的。但是笔者现在的需求是,不仅批量插入数据后,并返回每条数据的主键,

网上查阅了一番始终没有找到,相应办法,倒是针对mysql貌似mybatsi是支持批量返回主键的,因为笔者没有测试,所有不敢妄下言论。

好了,说了这么多,直接进入正题:

1、参照网上的相关资源,如图所示

<insert id="saveEPDetail" useGeneratedKeys="true"  parameterType="java.util.List">
<selectKey keyProperty="code" resultType="String" order="BEFORE">
select SEQ_DIS_DRUG_PRESC_DETAIL.NEXTVAL as code from dual
</selectKey>
INSERT INTO DIS_DRUG_PRESC_DETAIL(
code,
antibac_purpose,
ref_price,
)
SELECT SEQ_DIS_DRUG_PRESC_DETAIL.NEXTVAL,t.*
FROM (
<foreach collection="list" item="item" separator="UNION ALL">
select
#{item.antibacPurpose,jdbcType=VARCHAR},
#{item.skintObserver2,jdbcType=VARCHAR}
from dual
</foreach>
) t
</insert>

结果批量插入式成功了,单主键code打死都没有返回,如是一条条插入又要加锁

最后的解决方式:因为笔者这里是采用序列生成的主键,于是在插入数据的时候,先调用一下序列获取到序列值,再赋值给主键code,最后进行批量插入操作。

如图所示java dao:

    /**
* 获取明细表主键
*
* @return
*/
String getEpDetailCode();

xml:

    <!--主键-->
<select id="getEpDetailCode" resultType="java.lang.String">
select SEQ_DIS_DRUG_PRESC_DETAIL.NEXTVAL as code from dual
</select>

最后问题终于解决的,若大家有好的方案欢迎指点E-mail dqcer@sina.com

mybatis批量插入并返回主键(序列)-oracle的更多相关文章

  1. 2017.9.15 mybatis批量插入后实现主键回填

    参考来自:mybatis mysql 批量insert 返回主键 注意:必须要在mybatis3.3.1及其以上才能实现. 1.service List branchEntryList = (Arra ...

  2. MyBatis中插入并返回主键

    开发过程中经常遇到需要插入一条数据,并且返回这条数据自增的主键,在MyBatis中只需要在mapper中添加keyProperty属性即可 在mapper中添加keyProperty属性 <in ...

  3. Mybatis配置插入数据返回主键ID

    需要在insert方法中添加 <insert id="insertSelective" parameterType="com.midou.ott.model.MDA ...

  4. Mybatis之MySql批量insert后返回主键

    需求:使用批量插入后,需要insert之后的每一条记录的ID 注意:Mybatis3.3.1的版本以后支持批量插入后返回主键ID 示例: domin.java: public class User { ...

  5. Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  6. MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  7. Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了

    insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...

  8. MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键

    MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键 >>>>>>>>>>>>>> ...

  9. mybatis添加记录时返回主键id

    参考:mybatis添加记录时返回主键id 场景 有些时候我们在添加记录成功后希望能直接获取到该记录的主键id值,而不需要再执行一次查询操作.在使用mybatis作为ORM组件时,可以很方便地达到这个 ...

随机推荐

  1. oracle 数据库备份与恢复

    oracle 数据库备份与恢复 包含四个部分: 1.数据泵备份与恢复 2.rman备份与恢复 3.CSV增量备份恢复 4.截库操作 1.数据泵备份与恢复 expdp/ / impdp 时的 CONTE ...

  2. laravel5.5学习2-路由系统

    一.初识路由 路由系统是所有 PHP 框架的核心,路由承载的是 URL 到代码片段的映射,不同的框架所附带的路由系统是这个框架本质最真实的写照,一丝不挂,一览无余.Laravel 路由中文文档:htt ...

  3. mysql 聚合函数(2)

    平均 svg select avg(sal + IFNULL(comm,0)) as avg_sal from t_emp 总和 sum select sum(sal + IFNULL(comm,0) ...

  4. 用C#控制台编写 推箱子之类的 坐标移动----之二维坐标

     //首先用枚举 列出方向  上,下,左,右(枚举的最后一位数后不用符号  否则会报错)        public enum dro    {       up = 1,        down = ...

  5. .net core 2.2.0 SOAP踩坑

    首先确认下面几个程序集是最新版本: <PackageReference Include="System.ServiceModel.Http" Version="4. ...

  6. 03-Spring基于xml的IOC配置--spring的依赖注入

    1.概念 依赖注入:Dependency Injection(简称DI注入).它是 spring 框架核心 ioc 的具体实现. 简单理解:可以在一个类中不通过new的方式依赖其它对象.目的是为了解耦 ...

  7. c#获取网络时间

    public static DateTime GetInternetDate()        {            var client = new TcpClient("time.n ...

  8. 集群中Session共享解决方案分析

    一.为什么要Session共享 Session存储在服务器的内存中,比如Java中,Session存放在JVM的中,Session也可以持久化到file,MySQL,redis等,SessionID存 ...

  9. mysql之innodb存储引擎

    mysql之innodb存储引擎 innodb和myisam区别 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>. ...

  10. Redis 实战之主从复制、高可用、分布式

      目录 简介 持久化 主从复制 高可用 Redis-Sentinel .NET Core开发 分布式 Redis-Cluster 配置说明 常见问题 简介 本节内容基于 CentOS 7.4.170 ...