在資料庫插入的時候,有很多屬性需要我們自己處理,如主鍵自增字段。
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>
這樣我們就可以根據自定義的規則來處理生成主鍵了。