MyBatis插入並獲取自增主鍵


MyBatis插入並獲取自增主鍵

在MyBatis中,經常會使用到自增主鍵,但是在一個方法體內插入后如何獲取自增后的主鍵呢?

我們知道insert和insertSelective兩個方法都會有一個Integer類型返回值,它是不是我們要的自增主鍵呢?答案是:當然不是!

MyBatis當然知道我們的這個需求,也提供了對應的解決方案,而且是兩種。接下來我們一起看看吧

方案1:在插入后查詢最后一條數據的id

在插入元素后我們查詢一下最后一條數據的id,不就可以拿到這個對象的id了嗎

  <insert id="insertSelective" parameterType="cn.rayfoo.dao.User">
    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into user
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="name != null">
        name,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>

方案2:在insert標簽上加上如下屬性

  • 設置useGeneratedKeys為true

  • 指定keyProperty為主鍵的字段名稱

  <insert id="insertSelective" parameterType="cn.rayfoo.dao.User" useGeneratedKeys="true" keyProperty="id">
  </insert>

注意:

  1. 通過這兩種方式獲取的主鍵,不是通過返回值的形式返回,而是直接賦值給insertSelective操作的那個bean對象。
  2. 如果標簽中插入了多條數據,那么拿到的id將會是最后一條,也就是說這個方法不適用於批量插入的insert語句。


免責聲明!

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



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