Intégration polyglotte de MyBatis avec Spring Boot : Java, Kotlin et Groovy

Mapper commun

Quel que soit le langage, l'interface Mapper peut être déclarée avec des annotations MyBatis :

@Mapper
public interface ProductMapper {
  @Select("SELECT * FROM products WHERE category = #{category}")
  List<Product> findByCategory(String category);
}

Java : approche explicite et type-safe

Java reste la référence pour les projets d'entreprise. L'injection par constructeur et les annotations rendent le code clair et facilement testable :

@SpringBootApplication
public class CatalogApplication implements CommandLineRunner {

  private final ProductMapper productRepository;

  public CatalogApplication(ProductMapper productRepository) {
    this.productRepository = productRepository;
  }

  @Override
  public void run(String... args) {
    productRepository.findByCategory("books")
        .forEach(System.out::println);
  }
}

Kotlin : concision et sécurité des nulls

Kotlin réduit le bruit syntaxique tout en conservant la vérification des nulls à la compilation. La classe d'application devient plus compacte :

@SpringBootApplication
class CatalogApplication(private val productRepository: ProductMapper) : CommandLineRunner {

  @Transactional
  override fun run(vararg args: String) {
    productRepository.findByCategory("books")
      .forEach(::println)
  }
}

Groovy : flexibilité dynamique

Groovy convient bien aux scripts d'administration ou aux prototypes rapides grâce à sa syntaxe souple :

@SpringBootApplication
class CatalogApplication implements CommandLineRunner {

  final ProductMapper productRepository

  CatalogApplication(ProductMapper productRepository) {
    this.productRepository = productRepository
  }

  @Override
  void run(String... args) {
    productRepository.findByCategory("books")
      .each { println it }
  }
}

Configuration automatique

L'ajout de la dépendance active l'auto-configuration :

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>3.0.3</version>
</dependency>

Spring Boot détecte automatiquement le DataSource, crée le SqlSessionFactory et anregistre les interfaces annotées @Mapper. Aucune configuraton XML explicite n'est requise.

Recommandations

  • Java : projets d'entreprise avec de nombreux développeurs et des contraintes de maintenance.
  • Kotlin : services modernes utilisant les coroutines et les data classes.
  • Groovy : scripts d'administration, migrations conditionnelles ou preuves de concept rapides.

Optimisations

  • Activer le cache de second niveau MyBatis via <cache/> dans le mapper XML.
  • Utiliser les insertions par lots pour les imports volumineux.
  • Adapter defaultExecutorType en fonction du ratio lcetures/écritures.

Étiquettes: MyBatis Spring Boot Java kotlin Groovy

Publié le 22 juillet à 02h52