gpt4 book ai didi

java - MyBatis(Oracle)中插入后如何返回多个生成的列

转载 作者:行者123 更新时间:2023-12-02 09:57:12 26 4
gpt4 key购买 nike

我有一个带有主键的表,它由几列组成。有一个带有特殊 Oracle 钩子(Hook)的批量插入 - ignore_row_on_dupkey_index。该钩子(Hook)允许忽略唯一约束异常,重复的记录将被忽略,而非重复的记录将被成功插入。使用简单的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 注释,它允许通过设置属性 useGeneeratedKeyskeyColumn 来完成此操作。问题是我有复杂的主键,而 keyColumn 的类型为 String。另外我不想使用 SelectKey 注释。

所以我的问题是我是否可以通过 MyBatis 返回多个列值以及如何返回?

谢谢。

最佳答案

keyColumn 允许指定多个列。这是 the documentation 的相关部分(注意最后一句):

keyColumn | (insert and update only) Sets the name of the column in the table with a generated key. This is only required in certain databases (like PostgreSQL) when the key column is not the first column in the table. Can be a comma separated list of columns names if multiple generated columns are expected.

还有一个来自 mybatis 的例子 tests :

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

关于java - MyBatis(Oracle)中插入后如何返回多个生成的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55915746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com