ibatis、mybatis—有关在xml中写sql的小技巧(持续更新中)

xiaoxiao2021-02-28  76

1、正常情况下,我们在xml中写sql的时候,格式是这样的(以insert语句为例)

<!-- 新增实体 --> <insert id="XXX" parameterClass="com.XX.XX.XXX"> insert into tableName ( key1, key2, key3, key4) values( value1, value2, value3, value4) </insert>

那么问题来了,如果我们想通过触发序列的方式(例如在oracle环境下)获取id,并把获取到的id值赋给主键key1的值value1,我们应该怎么做呢?

解:

<!-- 新增实体 --> <insert id="XXX" parameterClass="com.XX.XX.XXX"> <selectKey keyProperty="cid" resultClass="java.lang.Long" type="pre"> select SEQ_XXX_ID.NEXTVAL from dual </selectKey> insert into tableName ( key1, key2, key3, key4) values( #cid#, value2, value3, value4) </insert>

注:1、selectKey标签的type属性:

有些是预先生成(pre-generate)主键的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主键的,如MySQL和SQL Server

2、本例仅仅是拿主键举个例子,实际上如果单纯为了使用序列创建id,有更简单的办法,直接把 SEQ_XXX_ID.NEXTVAL放在#cid#位置即可

转载请注明原文地址: https://www.6miu.com/read-2626699.html

最新回复(0)