oracle使用序列作为id在插入数据时使用(nextval)

1.插入一条数据时

//在selectkey这个标签里面有一个inoutid可以认为是“从前端传来的”,注意这个inoutid是实体类的主键字段,等会在实际的sql里面使用#{}使用到
//还是在这个标签里面有个返回值类型,既然这里需要的id,而且查出来的也是id,返回值也就是long类型了
//最后有一个before,就是在实际sql执行之前就是执行这个selectkey标签,只有这样下面的sql才能使用到id
		<selectKey keyProperty="inoutId" resultType="java.lang.Long" order="BEFORE">
			select SEQ_SY_INOUT_STORE.NEXTVAL from dual
		</selectKey>
		insert into SY_INOUT_STORE(INOUT_ID,INOUT_BATCHNO,INOUT_TYPE,TYPE,BASECODE,SELLER_NAME,SELLER_CPCCODE, BUYER_NAME,
		BUYER_CPCCODE, WEIGHT, STANDARD, PRODUCT_CODE, CREATE_TIME, REMARK, BUYER_TEL,BUYER_ADDRESS,INOUT_STORE_TIME,MANAGER,OPERATOR)
		VALUES (#{inoutId},#{inoutBatchno},#{inoutType},#{type},#{basecode},#{sellerName},#{sellerCpccode},#{buyerName},#{buyerCpccode},
		#{weight},#{standard},#{productCode},sysdate,#{remark},#{buyerTel},#{buyerAddress},#{inoutStoreTime},#{manager},#{operator})
	

给个实例的样子

2.插入多条数据时

//注意下面values里面的第一条语句“seq_sy_inout_code.nextval”,不用select关键字了,直接这样写就可以
	insert into SY_INOUT_CODE
    (INOUT_CODE_ID,CODE,INOUT_ID,CREATE_TIME)
    values
    <foreach collection="list" item="item" index="index" separator=",">
      (
      SEQ_SY_INOUT_CODE.nextval,
      #{item.code},
      #{item.inoutId},
      sysdate
      )
    </foreach>

3.插入多条数据时,II

//这就去掉了values关键字,相当于   --insert into sy_inout_code(j,j,j) select * from xxx-- 这个样子
  <insert id="insertRecordList" parameterType="java.util.List">
    insert into SYCLOUD.SY_INOUT_CODE (INOUT_CODE_ID, CODE, INOUT_ID, 
     		CREATE_TIME, UPDATE_TIME)
    select SYCLOUD.SEQ_SY_INOUT_CODE.nextval, A.* from (
    <foreach collection="list" item="item" index="index" separator="union all">
    select #{item.code,jdbcType=VARCHAR},
	      #{item.inoutId,jdbcType=DECIMAL},
	      #{item.createTime,jdbcType=TIMESTAMP},
	      #{item.updateTime,jdbcType=TIMESTAMP} from dual
    </foreach>
    ) A
  </insert>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值