使用mybatis-generator生成的mapper執行insert時獲取主鍵id


有時候,我們在往mysql數據庫插入一行數據的同時,想要知道這一行數據的主鍵id。mybatis提供了2種獲取自增主鍵的方式:一種是 ,另一種是使用這三個屬性: useGeneratedKeys、keyProperty、keyColumn
在使用mybatis-generator 插件自動生成mapper.xml文件時,它們的配置示例分別如下:
在 table屬性中做如下配置:
<generatedKey column="id" sqlStatement="JDBC" identity="true"/>
生成的mapper xml文件關於Insert的語句如下:

INSERT INTO user( name, age) VALUES(#{name}, #{age}) ;

在table中配置:
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
生成的mapper xml文件關於Insert的語句如下:

  INSERT INTO user(`name`, `age`) VALUES(#{name}, #{age}) ;
  <selectKey resultType="int" keyProperty="id">
      SELECT LAST_INSERT_ID()
  </selectKey>
看mybatis-generator 關於generatedKey的[官方文檔](https://mybatis.org/generator/configreference/generatedKey.html )關於 sqlStatement 設置為Mysql 或者 JDBC 的解釋其實並不是很清楚知道這2者之間的差別。 我覺得:如果是使用Mysql數據庫,並且 數據庫的表 配置了 自增主鍵(auto increment),那么是可以將 sqlStatement 配置成 JDBC 的。因為: > mybatis的 SelectKey 屬性 本身是為了不支持返回自動生成主鍵的數據庫而提供的,而且 通過 SelectKey 獲取主鍵id,整個過程是:先 insert記錄,再 `SELECT LAST_INSERT_ID()` ,這是兩條SQL語句,要注意並發問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM