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>