[英]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批注,該批注允許通過設置屬性useGeneratedKeys和keyColumn來實現 。 問題是我有復雜的主鍵,而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.