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

时间:2019-04-30 07:19:18

标签: java oracle jdbc mybatis

我有带有主键的表,该表由几列组成。有带有特殊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 注释。

所以我的问题是我可以返回几个列的值,如何返回MyBatis?

谢谢。

1 个答案:

答案 0 :(得分:1)

final GoogleSignIn googleSignIn = GoogleSignIn(); bool _isAuth = false; @override void initState() { print(_isAuth); if (googleSignIn.currentUser != null) { setState(() { print(_isAuth); _isAuth = true; }); } super.initS 允许指定多个列。这是the documentation的相关部分(请注意最后一句话):

  

keyColumn | (仅插入和更新)使用生成的键设置表中的列名称。仅当键列不是表中的第一列时,才在某些数据库(如PostgreSQL)中需要这样做。如果期望生成多个列,则可以是用逗号分隔的列名称列表。

还有mybatis tests的示例:

keyColumn