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 值选择一组聚合根 |
|
|
|
选择由另一个实体引用的实体集。引用实体的类型用于前缀。引用的实体类型用作后缀。此方法已弃用。改用 |
所有 |
|
|
选择通过属性路径由另一个实体引用的实体集。 |
所有 |
|
|
选择所有聚合根,已排序 |
|
|
|
选择一页聚合根,可选择排序 |
|
|
|
统计用作前缀的聚合根类型数量 |
|
|