MyBatis 整合
CRUD 操作和查詢方法可以委託給 MyBatis。本節介紹如何配置 Spring Data JDBC 以整合 MyBatis,以及應遵循哪些約定來將查詢執行和對映移交給該庫。
配置
將 MyBatis 正確整合到 Spring Data JDBC 的最簡單方法是將 MyBatisJdbcConfiguration
匯入到您的應用程式配置中
@Configuration
@EnableJdbcRepositories
@Import(MyBatisJdbcConfiguration.class)
class Application {
@Bean
SqlSessionFactoryBean sqlSessionFactoryBean() {
// Configure MyBatis here
}
}
如您所見,您只需宣告一個 SqlSessionFactoryBean
,因為 MyBatisJdbcConfiguration
最終依賴於 ApplicationContext
中可用的 SqlSession
bean。
使用約定
對於 CrudRepository
中的每個操作,Spring Data JDBC 會執行多個語句。如果在應用程式上下文中存在一個 SqlSessionFactory
,Spring Data 會在每個步驟中檢查 SessionFactory
是否提供了相應的語句。如果找到,則使用該語句(包括其配置的實體對映)。
語句的名稱是透過將實體型別的完全限定名與 Mapper.
和一個確定語句型別的 String
連線起來構成的。例如,如果要插入 org.example.User
的例項,Spring Data JDBC 會查詢名為 org.example.UserMapper.insert
的語句。
執行語句時,[MyBatisContext
] 的一個例項會作為引數傳遞,它使各種引數可供語句使用。
下表描述了可用的 MyBatis 語句
名稱 | 目的 | 可能觸發此語句的 CrudRepository 方法 | MyBatisContext 中可用的屬性 |
---|---|---|---|
|
插入單個實體。這也適用於聚合根引用的實體。 |
|
|
|
更新單個實體。這也適用於聚合根引用的實體。 |
|
|
|
刪除單個實體。 |
|
|
|
刪除由給定屬性路徑作為字首的任何聚合根型別引用的所有實體。請注意,用於語句名字首的型別是聚合根的名稱,而不是要刪除的實體的名稱。 |
|
|
|
刪除以該型別作為字首的所有聚合根 |
|
|
|
刪除由具有給定 propertyPath 的聚合根引用的所有實體 |
|
|
|
按 ID 選擇聚合根 |
|
|
|
選擇所有聚合根 |
|
|
|
按 ID 值選擇一組聚合根 |
|
|
|
選擇由另一個實體引用的一組實體。引用實體的型別用作字首。被引用實體的型別用作字尾。此方法已棄用。請改用 |
所有 |
|
|
透過屬性路徑選擇由另一個實體引用的一組實體。 |
所有 |
|
|
選擇所有聚合根,並排序 |
|
|
|
選擇一頁聚合根,可選排序 |
|
|
|
統計以該型別作為字首的聚合根數量 |
|
|