MyBatis 統合
CRUD 操作とクエリメソッドは MyBatis に委譲できます。このセクションでは、MyBatis と統合するように Spring Data JDBC を構成する方法、およびクエリの実行とライブラリへのマッピングを引き継ぐために従うべき規則について説明します。
構成
MyBatis を Spring Data JDBC に適切にプラグインする最も簡単な方法は、MyBatisJdbcConfiguration
をアプリケーション構成にインポートすることです。
@Configuration
@EnableJdbcRepositories
@Import(MyBatisJdbcConfiguration.class)
class Application {
@Bean
SqlSessionFactoryBean sqlSessionFactoryBean() {
// Configure MyBatis here
}
}
ご覧のとおり、MyBatisJdbcConfiguration
は ApplicationContext
で最終的に利用可能になるために SqlSession
Bean に依存しているため、宣言する必要があるのは SqlSessionFactoryBean
だけです。
使用規則
CrudRepository
の各操作に対して、Spring Data JDBC は複数のステートメントを実行します。アプリケーションコンテキストに SqlSessionFactory
[GitHub] (英語) がある場合、Spring Data は、各ステップで、SessionFactory
がステートメントを提供するかどうかをチェックします。見つかった場合は、そのステートメント(構成されたエンティティへのマッピングを含む)が使用されます。
ステートメントの名前は、エンティティ型の完全修飾名と Mapper.
およびステートメントの種類を決定する String
を連結することにより構築されます。例: org.example.User
のインスタンスが挿入される場合、Spring Data JDBC は org.example.UserMapper.insert
という名前のステートメントを探します。
ステートメントが実行されると、[MyBatisContext
] のインスタンスが引数として渡され、さまざまな引数がステートメントで使用可能になります。
次の表は、使用可能な MyBatis ステートメントについて説明しています。
名前 | 目的 | このステートメントをトリガーする可能性のある CrudRepository メソッド | MyBatisContext で利用可能な属性 |
---|---|---|---|
| 単一のエンティティを挿入します。これは、集約ルートによって参照されるエンティティにも適用されます。 |
|
|
| 単一のエンティティを更新します。これは、集約ルートによって参照されるエンティティにも適用されます。 |
|
|
| 単一のエンティティを削除します。 |
|
|
| 指定されたプロパティパスのプレフィックスとして使用される型の集約ルートによって参照されるすべてのエンティティを削除します。ステートメント名のプレフィックスに使用される型は、削除されるエンティティの名前ではなく、集約ルートの名前であることに注意してください。 |
|
|
| プレフィックスとして使用される型のすべての集約ルートを削除します |
|
|
| 指定された propertyPath を持つ集約ルートによって参照されるすべてのエンティティを削除します |
|
|
| ID で集約ルートを選択します |
|
|
| すべての集約ルートを選択します |
|
|
| ID 値によって集約ルートのセットを選択します |
|
|
| 別のエンティティによって参照されるエンティティのセットを選択します。参照エンティティの型がプレフィックスに使用されます。参照されるエンティティ型は、接尾辞として使用されます。このメソッドは非推奨です。代わりに | すべての |
|
| プロパティパスを介して別のエンティティによって参照されるエンティティのセットを選択します。 | すべての |
|
| ソートされたすべての集約ルートを選択します |
|
|
| オプションでソートされた集約ルートのページを選択します |
|
|
| プレフィックスとして使用される型の集約ルートの数を数えます |
|
|