簡體   English   中英

在MyBatis(Oracle)中插入后如何返回多個生成的列

[英]How to return multiple generated columns after insert in MyBatis(Oracle)

我有帶有主鍵的表,該表由幾列組成。 有帶有特殊Oracle鈎子的批處理插入-ignore_row_on_dupkey_index 該掛鈎允許忽略唯一約束異常,重復記錄只是被忽略,而非重復記錄則可以成功插入。 使用簡單的jdbc,我可以通過代碼輕松返回主鍵(由幾列組成):

try(PreparedStatement st = connectio.preparedStatement("insert /* ignore_row_on_dupkey(Table_name, Constraint) */ into TABLE(c1, c2, c3) values(?,?,?)", new String [] {"c1", "c2"})) {
//Batch insert then get generated keys
}

然后,我可以通過遍歷返回的鍵來分析重復項。

我想通過MyBatis實現相同的目標。 我發現了Options批注,該批注允許通過設置屬性useGeneratedKeyskeyColumn來實現 問題是我有復雜的主鍵,而keyColumn的類型為String。 我也不想使用SelectKey注釋。

所以我的問題是我可以返回幾個列的值嗎?

謝謝。

keyColumn允許指定多個列。 這是文檔的相關部分(請注意最后一句話):

keyColumn | (僅插入和更新)使用生成的鍵設置表中的列名稱。 僅當鍵列不是表中的第一列時,才在某些數據庫(如PostgreSQL)中需要這樣做。 如果需要多個生成的列,則可以是用逗號分隔的列名稱列表。

還有來自mybatis 測試的示例:

<insert id="insertTable2WithGeneratedKeyXml" useGeneratedKeys="true"
    keyProperty="nameId,generatedName" keyColumn="ID,NAME_FRED">
  insert into table2 (name) values(#{name})
</insert>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM