Недавно я начал изучать использование myBatis. Теперь я сталкиваюсь с таким сценарием, мне нужно постоянно извлекать новый список объектов через WebService, а затем для этого списка мне нужно вставить/обновить каждый объект в оракуле Таблица DB через myBatis.
Сложная часть заключается в том, что я не могу просто выполнять пакетную вставку каждый раз, потому что некоторые из объектов могут уже существовать в БД, для этих записей мне нужно обновить поля из них вместо новой вставки.
Мое текущее решение может быть очень глупо, с использованием Java, построить список объектов из webservice, пропустить через каждый из них, сделать выбор myBatis, если он не является нулевым (уже существует в db), затем выполните обновление myBatis; в противном случае сделайте вкладку myBatis для этого нового объекта.
Достигнута функция. Но мой технический руководитель говорит, что он очень низкоэффективен, поскольку выполнение цикла for с использованием Java и вставка/обновление по одному потребует много системного ресурса. Он посоветовал мне делать пакетную вставку с помощью myBatis, передав список объектов.
Пакетная вставка в myBatis проста, однако, поскольку я не просто вставляю (для существующих записей мне нужно сделать обновление), я не думаю, что пакетная вставка здесь подходит. Я задумался об этом за некоторое время и понял, что мне нужно будет использовать "merge" вместо "insert" (для Oracle).
Примеры, которые я искал для слияния в myBatis, относятся только к одному объекту, а не к пакету. Таким образом, я хочу выяснить, могут ли эксперты предложить мне несколько примеров того, как выполнить пакетное слияние в MyBatis (правильный способ написать Mapper)?