Add MyBatis integration module#1921
Conversation
c1fcedc to
071e179
Compare
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a new Micronaut MyBatis integration module and accompanying guide/docs examples to enable automatic MyBatis bean creation from configured JDBC datasources.
Changes:
- Introduces
mybatismodule withMyBatisFactoryandMyBatisConfigurationCustomizerSPI. - Adds focused tests for bean creation, customizer application, and transaction factory fallback/selection.
- Updates the user guide (TOC + new MyBatis pages) and adds snippet-backed Java/Kotlin/Groovy docs examples.
Reviewed changes
Copilot reviewed 31 out of 31 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/main/docs/guide/toc.yml | Adds MyBatis section entries to the SQL guide TOC. |
| src/main/docs/guide/mybatis/mybatis-session-access.adoc | Documents injecting MyBatis runtime beans produced per datasource. |
| src/main/docs/guide/mybatis/mybatis-customizers.adoc | Documents configuration customizers and transaction factory selection. |
| src/main/docs/guide/mybatis.adoc | Adds main MyBatis integration guide page and bean list. |
| src/main/docs/guide/introduction.adoc | Expands introduction with a list of supported integrations (includes MyBatis). |
| settings.gradle | Includes new mybatis Gradle subproject. |
| mybatis/src/test/java/io/micronaut/configuration/mybatis/support/TestTransactionFactory.java | Adds a qualified test transaction factory bean for selection tests. |
| mybatis/src/test/java/io/micronaut/configuration/mybatis/TestMyBatisConfigurationCustomizer.java | Adds a qualified customizer used by tests (mapper registration + settings). |
| mybatis/src/test/java/io/micronaut/configuration/mybatis/TestMapper.java | Adds a small test mapper used by integration tests. |
| mybatis/src/test/java/io/micronaut/configuration/mybatis/MyBatisFactoryTest.java | Adds tests asserting bean creation and fallback behavior. |
| mybatis/src/main/java/io/micronaut/configuration/mybatis/package-info.java | Declares package-level configuration/requirements for the module. |
| mybatis/src/main/java/io/micronaut/configuration/mybatis/MyBatisFactory.java | Implements MyBatis bean creation from Micronaut DataSource beans. |
| mybatis/src/main/java/io/micronaut/configuration/mybatis/MyBatisConfigurationCustomizer.java | Adds SPI for customizing the MyBatis Configuration per datasource. |
| mybatis/build.gradle | Adds Gradle module build + dependencies for the new integration. |
| gradle/libs.versions.toml | Adds managed MyBatis dependency coordinates and version. |
| docs-examples/mybatis-kotlin/src/test/kotlin/io/micronaut/configuration/mybatis/docs/ReportingRepository.kt | Adds Kotlin snippet example for qualified bean injection. |
| docs-examples/mybatis-kotlin/src/test/kotlin/io/micronaut/configuration/mybatis/docs/InventoryRepository.kt | Adds Kotlin snippet example using SqlSessionManager + mapper. |
| docs-examples/mybatis-kotlin/src/test/kotlin/io/micronaut/configuration/mybatis/docs/InventoryMyBatisCustomizer.kt | Adds Kotlin snippet example customizer registering a mapper. |
| docs-examples/mybatis-kotlin/src/test/kotlin/io/micronaut/configuration/mybatis/docs/InventoryMapper.kt | Adds Kotlin snippet mapper interface. |
| docs-examples/mybatis-kotlin/src/test/kotlin/io/micronaut/configuration/mybatis/docs/Inventory.kt | Adds Kotlin snippet model class. |
| docs-examples/mybatis-java/src/test/java/io/micronaut/configuration/mybatis/docs/ReportingRepository.java | Adds Java snippet example for qualified bean injection. |
| docs-examples/mybatis-java/src/test/java/io/micronaut/configuration/mybatis/docs/InventoryRepository.java | Adds Java snippet example using SqlSessionManager + mapper. |
| docs-examples/mybatis-java/src/test/java/io/micronaut/configuration/mybatis/docs/InventoryMyBatisCustomizer.java | Adds Java snippet example customizer registering a mapper. |
| docs-examples/mybatis-java/src/test/java/io/micronaut/configuration/mybatis/docs/InventoryMapper.java | Adds Java snippet mapper interface. |
| docs-examples/mybatis-java/src/test/java/io/micronaut/configuration/mybatis/docs/Inventory.java | Adds Java snippet model record. |
| docs-examples/mybatis-groovy/src/test/groovy/io/micronaut/configuration/mybatis/docs/ReportingRepository.groovy | Adds Groovy snippet example for qualified bean injection. |
| docs-examples/mybatis-groovy/src/test/groovy/io/micronaut/configuration/mybatis/docs/InventoryRepository.groovy | Adds Groovy snippet example using SqlSessionManager + mapper. |
| docs-examples/mybatis-groovy/src/test/groovy/io/micronaut/configuration/mybatis/docs/InventoryMyBatisCustomizer.groovy | Adds Groovy snippet example customizer registering a mapper. |
| docs-examples/mybatis-groovy/src/test/groovy/io/micronaut/configuration/mybatis/docs/InventoryMapper.groovy | Adds Groovy snippet mapper interface. |
| docs-examples/mybatis-groovy/src/test/groovy/io/micronaut/configuration/mybatis/docs/Inventory.groovy | Adds Groovy snippet model class. |
| README.md | Updates repository description and mentions the new MyBatis module in docs. |
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/micronaut-projects/micronaut-sql/sessions/d0df09e1-b61d-443d-b470-4db856f6bab1 Co-authored-by: graemerocher <66626+graemerocher@users.noreply.github.com>
Applied the requested review-thread updates in commit Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot resolve the merge conflicts in this pull request |
Co-authored-by: graemerocher <66626+graemerocher@users.noreply.github.com>
Co-authored-by: graemerocher <66626+graemerocher@users.noreply.github.com>
Resolved by merging Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
The build is running forever, there is the error io.micronaut.configuration.mybatis.MyBatisFactoryTest doesNotCreateBeansWithoutDataSource() FAILED java.lang.StackOverflowError |
Update MyBatis configuration creation to resolve the datasource-specific TransactionFactory through BeanLocator, falling back to JdbcTransactionFactory when none is registered. Also type the SqlSessionManager bean explicitly so it is exposed as SqlSessionManager.
|



Summary
micronaut-mybatismodule that creates MyBatis configuration and session beans from Micronaut datasourcessnippet::-backed Java, Kotlin, and Groovy docs examplesVerification
./gradlew :micronaut-mybatis:test./gradlew --rerun-tasks publishGuide docsResolves #815