mysql數據庫使用mybatis新增操作返回自增主鍵的值


在使用mysql數據庫做一些新增數據業務時,比如說一張表有個自增主鍵id,在新增一條數據后想要返回新增的這條數據的id值用於后續業務使用,在使用mybatis做持久化管理,xml中可以使用如下方式:

<insert id="insertClientLog" parameterType="TClientLog">
    <selectKey keyProperty="serialNo" order="AFTER" resultType="integer">
      select LAST_INSERT_ID()
    </selectKey>
    insert into pub_tclientlogfile(
      operate_date,
      operate_time,
      remark,
      del_status
    ) values (
      #{operateDate},
      #{operateTime}
      #{remark},
      #{delStatus}
    )
</insert>

 說明:

  使用mysql的LAST_INSERT_ID()方法獲取插入記錄的主鍵,設置在插入數據后,即order屬性設置為after,使用select LAST_INSERT_ID()查詢並返回新插入數據的主鍵值。

  keyProperty:將查詢到的主鍵值設置到對應實體類的主鍵屬性字段。

  order:<selectKey> 標簽內的sql語句相對於insert語句的執行順序配置,可以為BEFORE、AFTER,AFTER表示select LAST_INSERT_ID()這個語句將在insert語句之后執行。 

或者使用如下方式:

<insert id="insertClientLog" useGeneratedKeys="true" keyProperty="serialNo" parameterType="TClientLog">
    insert into pub_tclientlogfile(
      operate_date,
      operate_time,
      remark,
      del_status
    ) values (
      #{operateDate},
      #{operateTime}
      #{remark},
      #{delStatus}
    )
</insert>

 說明:  

  useGeneratedKeys:設置是否使用jdbc的getGenereatedKeys方法獲取主鍵並賦值到keyProperty設置的屬性。

  keyProperty:將查詢到的主鍵值設置到對應實體類的主鍵屬性字段。

對應mapper方法:

void insertClientLog(TClientLog clientLog);

使用時使用入參的getXxx方法來獲取對應的結果值:

 //調用插入方法
clientLogMapper.insertClientLog(clientLog);
//使用入參的getXxx方法返回結果值
System.out.println("serialNo:" + clientLog.getSerialNo());

結果如下圖所示:

 


免責聲明!

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



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