1. 程式人生 > >mybatis之主鍵返回

mybatis之主鍵返回

一、主鍵返回之MySQL自增主鍵
思路:
MySQL自增主鍵,是指在insert之前MySQL會自動生成一個自增的主鍵。
我們可以通過MySQL的函式獲取到剛插入的自增主鍵:
LAST_INSERT_ID()
這個函式是在insert語句之後去呼叫。

<!-- 新增使用者之自增主鍵返回(selectKey方式) -->
    <!-- selectKey:查詢主鍵,在標籤內輸入需要查詢主鍵的sql -->
    <!-- order:指定查詢主鍵的sql和insert語句的執行順序,相對於insert語句來說 這裡order應該指定為after,先執行插入語句,插入之後再得到其主鍵-->
<!-- LAST_INSERT_ID:該函式是mysql的函式,用來獲取自增主鍵的id,必須和insert語句配合使用--> <insert id="insertUser" parameterType="com.exercise.entity.user"> <selectKey keyProperty="id" resultType="int" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO user (username,sex,birthday,address) VALUES (#{username},#{sex},#{birthday},#{address}) </insert
>

程式碼測試(可直接通過get方法得到主鍵id):

user u = new user();
u.setUsername("xiaodong11");
u.setAddress("abc123");
sqlsession.insert("test.insertUser", u);
System.out.println(u.getId());

二、主鍵返回之mysql函式UUID
注意:使用mysql的函式UUID()生成主鍵,需要修改表中id欄位型別為是String,長度設定為35位。

<!-- 新增使用者之UUID主鍵返回 -->
<!--現在的操作就是先生成一個隨機的id主鍵,然後把他加到資料庫中-->
<!-- [uuid]:MySQL的函式,生成的主鍵是35位的字串,所以使用它時要修改id的型別為字元型別 注意: 1、此時order採用BEFORE,因為需要先生成出主鍵,再執行insert語句 2、顯式的給ID賦值 --> <insert id="insertUser" parameterType="cn.itcast.mybatis.po.User"> <selectKey keyProperty="id" resultType="string" order="BEFORE"> SELECT UUID() </selectKey> INSERT INTO USER(id,username,sex,birthday,address) VALUES (#{id},#{username},#{sex},#{birthday},#{address}) </insert>

三、主鍵返回之oracle序列返回

<!-- 新增使用者之sequence返回 -->
<!-- 
    通過Oracle的sequence獲取主鍵方式與MySQL的uuid方式基本一致    
-->
<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
    <selectKey keyProperty="id" resultType="int" order="BEFORE">
        SELECT user_seq.nextval() FROM dual
    </selectKey>
    INSERT INTO USER(id,username,sex,birthday,address) VALUES (#{id},#{username},#{sex},#{birthday},#{address})
</insert>