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
最終依賴於 SqlSession
bean 在 ApplicationContext
中可用。
使用慣例
對於 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 值選取一組聚合根 |
|
|
|
選取一組由另一個實體引用的實體。引用實體的類型用作前綴。被引用實體的類型用作後綴。此方法已過時。請改用 |
所有 |
|
|
選取一組通過屬性路徑由另一個實體引用的實體。 |
所有 |
|
|
選取所有聚合根,已排序 |
|
|
|
選取聚合根頁面,可選排序 |
|
|
|
計算用作前綴的類型的聚合根數量 |
|
|