需求:插入資料庫的資料成功後傳回其主鍵。
條件1,資料庫必須支援自增主鍵,例如MySql等,Oracle這種不支援自增主鍵的不可以。
條件2,目标主鍵必須自增,UUID是不支援的。
實作方式:
1.mybatis 的insert(或者insertSelective,以逆向工程mapper代碼為例)标簽要這樣寫
<insert id="insertSelective" parameterType="com.demo.UserData" useGeneratedKeys="true" keyProperty="id">
插入後就可以擷取被插入資料的主鍵了。
但是,這個主鍵不知直接傳回的,直接傳回的永遠都是操作影響的記錄數,這個主鍵是直接傳回到被插入對象裡的。
java代碼中的insert代碼為
mapper.insertSelective(userData);
那麼,執行完上面的代碼後,就可以通過userData.getId()擷取到傳回的自增主鍵了。
其他方式:
還可以通過mapper.xml中添加
<insert id="insertSelective" parameterType="com.demo.UserData">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user_data (xxx,xxx,xxx,xxx) values (省略)
</insert>
來實作同樣功能,
更簡單的方式是,直接在使用逆向工程的時候
<generatorConfiguration>
<context>
<table tableName="user_data"
domainObjectName="UserData">
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table>
</context>
</generatorConfiguration>
逆向後,直接生成上面的mapper.xml映射代碼