mybatis獲取自增主鍵
阿新 • • 發佈:2018-11-15
自增很常用,各種資料庫也有點不一樣,再次來鞏固一下並記錄,以後可能用得到
以簡單的insert 為例
- 靈活易用,比較常見,增加selectKey
LAST_INSERT_ID()用於MySQL的自增主鍵,其中 id 為主鍵欄位,order表示在insert語句前還是後執行,resultType為該sql執行結果的型別
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
<insert id="insertUser" parameterType="com.mybatis.model.User"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT LAST_INSERT_ID() </selectKey> insert into user (username,password,gender,email) values (#{username},#{password},#{gender},#{email}) </insert>
- 簡潔型的
在insert標籤增加 useGeneratedKeys="true" keyProperty="id"
其中useGeneratedKeys表示使用自增主鍵,keyProperty為java物件的屬性名稱
<insert id="insertUser" parameterType="com.mybatis.model.User" useGeneratedKeys="true" keyProperty="id"> insert into user (username,password,gender,email) values (#{username},#{password},#{gender},#{email}) </insert>
執行完後邏輯層可以通過User物件的個get方法獲取id
另外uuid型別和oracle的序列nextval是在insert之前生成,配置上order的屬性設為before
uuid樣例配置
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
SELECT uuid()
</selectKey>
Oracle樣例配置
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.String">
SELECT 序列名.nextval()
</selectKey>