阿神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>
PHP中文网2017-04-18 10:48:40
mybatis預設回傳的是影響的行數,要回傳id要另外寫。
如果是oracle的資料庫,uuid可以寫sys_guid()
如果是mysql的就要跟樓上說的一樣,先給一個id再保存
伊谢尔伦2017-04-18 10:48:40
不用在程式碼中提前產生一個uuid,理解一下selectKey 中keyProperty屬性就可以解決這個問題。
這樣在selectKey產生時,產生的UUID會set進目前物件中