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

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

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

1、主鍵回填

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對象中。

2、使用自定義規則生成主鍵

實際工作上有時候主鍵的生成規則並不是這麼簡單,比如我們取消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>

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章