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>