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 中可用的屬性 |
|---|---|---|---|
|
插入單個實體。這也適用於聚合根引用的實體。 |
|
|
|
更新單個實體。這也適用於聚合根引用的實體。 |
|
|
|
刪除單個實體。 |
|
|
|
刪除由用作具有給定屬性路徑的字首的型別的任何聚合根引用的所有實體。請注意,用於作為語句名稱字首的型別是聚合根的名稱,而不是要刪除的實體的名稱。 |
|
|
|
刪除用作字首的型別的所有聚合根 |
|
|
|
刪除由具有給定屬性路徑的聚合根引用的所有實體 |
|
|
|
按 ID 選擇聚合根 |
|
|
|
選擇所有聚合根 |
|
|
|
按 ID 值選擇一組聚合根 |
|
|
|
選擇由另一個實體引用的一組實體。引用實體的型別用作字首。引用實體的型別用作字尾。此方法已棄用。請改用 |
所有 |
|
|
透過屬性路徑選擇由另一個實體引用的一組實體。 |
所有 |
|
|
選擇所有聚合根,已排序 |
|
|
|
選擇一頁聚合根,可選排序 |
|
|
|
統計用作字首的型別的聚合根數量 |
|
|