Можно ли глобально установить режим исполнителя mybatis на BATCH? - PullRequest
0 голосов
/ 26 декабря 2018

В настоящее время я разрабатываю приложение Spring Boot, которое использует mybatis для своего слоя персистентности.Я хочу оптимизировать пакетную вставку сущностей в следующем сценарии:

// flightSerieMapper and legMapper are used to create a series of flights.
// legMapper needs to use batch insertion.
@Transactional
    public FlightSerie add(FlightSerie flightSerie) {
        Integer flightSerieId = flightSeriesSequenceGenerator.getNext();
        flightSerie.setFlightSerieId(flightSerieId);
        flightSerieMapper.create(flightSerie);
        // create legs in batch mode
        for (Leg leg : flightSerie.getFlightLegs()) {
            Integer flightLegId = flightLegsSequenceGenerator.getNext();
            leg.setLegId(flightLegId);
            legMapper.create(leg);
        }
        return flightSerie;
    }

mybatis настроен следующим образом в application.properties:

# this can be externalized if necessary
mybatis.config-location=classpath:mybatis-config.xml
mybatis.executor-type=BATCH

Это означает, что mybatis выполнит все операторыв пакетном режиме по умолчанию, включая отдельные операторы вставки / обновления / удаления.Это нормально?Есть ли какие-либо проблемы, о которых мне следует знать?

Другой подход заключается в использовании специальной SQLSession специально для LegMapper.Какой подход является лучшим (выделенный SQLSession или глобальный параметр в application.properties)?

Примечание : я видел другие примеры, когда "пакетные вставки" создаются с использованием цикла <foreach/> напрямуюв файле сопоставления mybatis xml.Я не хочу использовать этот подход, потому что он фактически не обеспечивает пакетную вставку.

...