mysql主鍵生成:java
經過修改sql映射文件,能夠將mysql自增主鍵返回:mysql
<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">sql
<!-- selectKey將主鍵返回,須要再返回 -->mybatis
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">oracle
</selectKey>ui
insert into user(username,birthday,sex,address)spa
values(#{username},#{birthday},#{sex},#{address});rem
</insert>it
添加selectKey實現將主鍵返回
keyProperty:返回的主鍵存儲在pojo中的哪一個屬性
order:selectKey的執行順序,是相對與insert語句來講,因爲mysql的自增原理執行完insert語句以後纔將主鍵生成,因此這裏selectKey的執行順序爲after
resultType:返回的主鍵是什麼類型
LAST_INSERT_ID():是mysql的函數,返回auto_increment自增列新記錄id值。
須要增長經過select uuid()獲得uuid值
<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
<selectKey resultType="java.lang.String" order="BEFORE"
keyProperty="id">
select uuid()
</selectKey>
insert into user(id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
</insert>
注意這裏使用的order是「BEFORE」
oracle 主鍵生成:
首先自定義一個序列且用於生成主鍵,selectKey使用以下:
<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
<selectKey resultType="java.lang.Integer" order="BEFORE"
keyProperty="id">
SELECT 自定義序列.NEXTVAL FROM DUAL
</selectKey>
insert into user(id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
</insert>
注意這裏使用的order是「BEFORE」