天天看點

Mybatis insert方法主鍵回填和自定義

在資料庫插入的時候,有很多屬性需要我們自己處理,如主鍵自增字段。

MYSQL中主鍵根據一定規則生成後,需要我們在插入後去主動擷取,以便後面的操作,Mybatis為我們提供了處理的方法。

主鍵回填

  • keyProperty:指定哪個字段是主鍵
  • useGeneratedKeys:這個主鍵是否使用資料庫内置生成政策

我們可以在XML檔案中進行如下配置:

<insert id="insertUser" parameterType="user" useGeneratedKeys="true" keProperty="id">
	insert into t_user(user_name,age) values (#${userName},#{age})
</insert>
           

這樣我們傳入的user對象無需設定id字段,Mybatis會自動進行設定處理,插入成功後id字段會回填到user對象中。

使用自定義規則生成主鍵

實際工作上有時候主鍵的生成規則并不是這麼簡單,比如我們取消t_user的主鍵自增規則。我們的要求是:

如果t_user表沒有資料,我們也要設定主鍵為1,否則就取主鍵最大值加2,來設定新的主鍵。

對此,Mybatis也提供了處理方法,使用SelectKey元素進行處理

<insert id="insertUser" parameterType="user" useGeneratedKeys="true" keProperty="id">
	<SelectKey keProperty="id" resultType="int" order="BEFORE>
		select if(max(id) is null, 1, max(id) + 2) as newId from t_user
	</SelectKey>
	insert into t_user(user_name,age) values (#${userName},#{age})
</insert>
           

這樣我們就可以根據自定義的規則來處理生成主鍵了。