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
defaultExecutorTypeen fonction du ratio lcetures/écritures.