java - 请问mybatis新增操作使用UUID 如何返回UUID
ringa_lee
ringa_lee 2017-04-18 10:46:40
0
4
678
ringa_lee
ringa_lee

ringa_lee

全部回覆(4)
Ty80

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

阿神

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>
Ty80

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

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

伊谢尔伦

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


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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板