插入数据时,在xml中使用selectKey完成自定义序列做数据列

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


使用selectKey,在sql数据插入前,完成对应序列的赋值

针对数据库不同类型,可以添加相关判断,用于满足不通数据库之间的差异性

<mapper namespace="pers.mobian.SqlHelper.sequNextVal">
<sql id="sequNextVal">
<if test="'${dialect}'=='oracle'">
SELECT ${dbSequName}.NEXTVAL FROM DUAL
</if>
<if test="'${dialect}'=='DB2'">
SELECT nextval for ${dbSequName} FROM SYSIBM.SYSDUMMY1
</if>
<if test="'${dialect}'=='mysql'">
<!-- 可以定位到指定方法中具体某个方法,用具体的方法实现序列的生成-->
select \\${@pers.mobian.util.DatabaseUtils@getSequenceNextId('${dbSequName}')}
</if>
</sql>

</mapper>


单条数据插入:

<insert id="addProductInfo">
<selectKey keyProperty="link_id" order="BEFORE" resultType="java.lang.Long">
<include refid="pers.mobian.SqlHelper.sequNextVal">
<property name="dbSequName" value="PRODUCT_MOBIAN_SEQ"/>
</include>
</selectKey>

INSERT INTO TTRD_MOBIAN
( link_id, parent_code, child_code )
VALUES
( #{link_id,jdbcType=DECIMAL}, #{parent_code,jdbcType=VARCHAR}, #{child_code,jdbcType=VARCHAR} )

</insert>


批量数据插入:

mysql和oracle的批量插入语法有出入,请自行调整相关格式

<insert id="addLimitResultDetail"  parameterType="HashMap"  >
insert into TTRD_MOBIAN (
link_id,
parent_code,
child_code
)

<foreach item="item" index="index" collection="items" separator=" union all " >
select
(<include refid="pers.mobian.SqlHelper.sequNextVal">
<property name="dbSequName" value="PERS_MOBIAN_SEQ"/>
</include> from dual),
#{parent_code,jdbcType=CHAR},
#{child_code,jdbcType=DECIMAL},

from
dual
</foreach>
</insert>


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6