mybatis之主鍵返回
阿新 • • 發佈:2019-02-20
一、主鍵返回之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>