1. 程式人生 > >mybatis獲取自增主鍵

mybatis獲取自增主鍵

自增很常用,各種資料庫也有點不一樣,再次來鞏固一下並記錄,以後可能用得到

 

以簡單的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>