mybatis獲取自增id的值

yingxian_Fei發表於2017-04-26

本文講述的方法主要適用於如下情景。在使用mybatis作為orm的專案中,如果多個關聯資料在同一個事物中時,第一個表插入資料時其主鍵為自增的id,第二個表插入資料時需要關聯插入的第一個表資料的id作為外來鍵,並且第一表中的資料除了主鍵id外都其餘專案都不具有唯一性。此時可以使用本文提供的方法在第一表插入資料後將其分配的自增id賦值給插入的物件。

1、mybatis中mapping檔案的配置

配置對於表的mapping的xml檔案,在插入資料的sql語句後加上如下配置:

useGeneratedKeys="true" keyProperty="id"

如:

  <insert id="insert" parameterType="api.landsem.mybatis.entity.DeviceHotInfoEntity"  useGeneratedKeys="true" keyProperty="id">
    insert into tb_device_hotinfo (id, create_time, update_time, 
      v, mileage, tb_devices_imei
      )
    values (#{id,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, 
      #{v,jdbcType=INTEGER}, #{mileage,jdbcType=REAL}, #{tbDevicesImei,jdbcType=VARCHAR}
      )
  </insert>

在加上上述配置後,在插入資料後,mybatis會將自動分配給該記錄的id值賦值到物件的id屬性中(不管事物是否提交)。第二個表中直接使用第一個物件的id屬性即可。

相關文章