搜尋

首頁  >  問答  >  主體

java - 请问mybatis新增操作使用UUID 如何返回UUID

ringa_leeringa_lee2802 天前679

全部回覆(4)我來回復

  • PHP中文网

    PHP中文网2017-04-18 10:48:40

    呼叫持久層前,自己產生一個UUID,放到物件裡並且方法傳回該UUID。

    回覆
    0
  • 阿神

    阿神2017-04-18 10:48:40

    dao介面定義 save 方法 時 嘗試 修改回傳類型 為String 看看有沒有接收到。
    預設是傳回影響行數的。如果配置了selectKey 可能會傳回 selectKey的內容 。

    在使用MyBatis做持久層時,insert語句預設是不傳回記錄的主鍵值,而是傳回插入的記錄條數;如果業務層需要得到記錄的主鍵時,可以透過設定的方式來完成這個功能

    針對Sequence主鍵而言,在執行insert sql前必須指定一個主鍵值給要插入的記錄,如Oracle、DB2,可以採用以下配置方式:

    <insert id="add" parameterType="vo.Category">
    <selectKey resultType="java.lang.Short" order="BEFORE" keyProperty="id">
    SELECT SEQ_TEST.NEXTVAL FROM DUAL
    </selectKey>
    
    insert into category (name_zh, parent_id,
    
    show_order, delete_status, description
    )
    values (#{nameZh,jdbcType=VARCHAR},
    #{parentId,jdbcType=SMALLINT},
    #{showOrder,jdbcType=SMALLINT},
    #{deleteStatus,jdbcType=BIT},
    #{description,jdbcType=VARCHAR}
    )
    </insert>
    

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:48:40

    mybatis預設回傳的是影響的行數,要回傳id要另外寫。
    如果是oracle的資料庫,uuid可以寫sys_guid()

    如果是mysql的就要跟樓上說的一樣,先給一個id再保存

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:48:40

    不用在程式碼中提前產生一個uuid,理解一下selectKey 中keyProperty屬性就可以解決這個問題。


    這樣在selectKey產生時,產生的UUID會set進目前物件中

    回覆
    0
  • 取消回覆