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 中可用的 ApplicationContext 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值选择一组聚合根 |
|
|
|
选择一组被其他实体引用的实体。引用实体的类型用作前缀,被引用实体的类型用作后缀。此方法已弃用,请使用 |
所有 |
|
|
通过属性路径选择被另一个实体引用的一组实体。 |
所有 |
|
|
选择所有聚合根,按排序方式 |
|
|
|
选择一个聚合根页面,可选择是否排序 |
|
|
|
计算用作前缀的聚合根类型的数量 |
|
|