У меня есть таблица с первичным ключом, которая состоит из нескольких столбцов. Существует пакетная вставка со специальным хуком 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. Я нашел Параметры аннотации, что позволяет сделать это, установив свойство useGeneratedKeys и keyColumn . Проблема в том, что у меня сложный первичный ключ, тогда как keyColumn имеет тип String.
Также я не хочу использовать SelectKey аннотацию.
Итак, мой вопрос, могу ли я вернуть значение нескольких столбцов и как по MyBatis или нет?
Спасибо.