此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data Relational 3.4.0spring-doc.cn

MyBatis 集成

CRUD 操作和查询方法可以委托给 MyBatis。 本节描述了如何配置 Spring Data JDBC 以与 MyBatis 集成,以及要遵循哪些约定来移交查询的运行以及到库的映射。spring-doc.cn

配置

将 MyBatis 正确插入 Spring Data JDBC 的最简单方法是将 MyBatis 导入到你的应用程序配置中:MyBatisJdbcConfigurationspring-doc.cn

@Configuration
@EnableJdbcRepositories
@Import(MyBatisJdbcConfiguration.class)
class Application {

  @Bean
  SqlSessionFactoryBean sqlSessionFactoryBean() {
    // Configure MyBatis here
  }
}

正如你所看到的,你需要声明的只是 a 依赖于一个 bean 最终可用。SqlSessionFactoryBeanMyBatisJdbcConfigurationSqlSessionApplicationContextspring-doc.cn

使用约定

对于 中的每个操作,Spring Data JDBC 都会运行多个语句。 如果应用程序上下文中有一个 SqlSessionFactory,则 Spring Data 会检查每个步骤是否提供 statement。 如果找到一个,则使用该语句(包括其配置的到实体的映射)。CrudRepositorySessionFactoryspring-doc.cn

语句的名称是通过将实体类型的完全限定名称与确定语句类型连接起来来构造的。 例如,如果要插入 的实例,则 Spring Data JDBC 会查找名为 的语句。Mapper.Stringorg.example.Userorg.example.UserMapper.insertspring-doc.cn

当语句运行时,[] 的实例将作为参数传递,这使得各种参数可用于语句。MyBatisContextspring-doc.cn

下表描述了可用的 MyBatis 语句:spring-doc.cn

名字 目的 CrudRepository 方法,可能会触发此语句 可用的属性MyBatisContext

insertspring-doc.cn

插入单个实体。这也适用于聚合根引用的实体。spring-doc.cn

save, .saveAllspring-doc.cn

getInstance:要保存的实例spring-doc.cn

getDomainType:要保存的实体的类型。spring-doc.cn

get(<key>):引用实体的 ID,其中 是 提供的反向引用列的名称。<key>NamingStrategyspring-doc.cn

updatespring-doc.cn

更新单个实体。这也适用于聚合根引用的实体。spring-doc.cn

save, .saveAllspring-doc.cn

getInstance:要保存的实例spring-doc.cn

getDomainType:要保存的实体的类型。spring-doc.cn

deletespring-doc.cn

删除单个实体。spring-doc.cn

delete, .deleteByIdspring-doc.cn

getId:需要删除的实例的 IDspring-doc.cn

getDomainType:要删除的实体的类型。spring-doc.cn

deleteAll-<propertyPath>spring-doc.cn

删除用作给定属性路径的前缀的类型的任何聚合根引用的所有实体。 请注意,用于为语句名称添加前缀的类型是聚合根的名称,而不是要删除的实体的名称。spring-doc.cn

deleteAll.spring-doc.cn

getDomainType:要删除的实体的类型。spring-doc.cn

deleteAllspring-doc.cn

删除用作前缀的类型的所有聚合根spring-doc.cn

deleteAll.spring-doc.cn

getDomainType:要删除的实体的类型。spring-doc.cn

delete-<propertyPath>spring-doc.cn

删除具有给定 propertyPath 的聚合根引用的所有实体spring-doc.cn

deleteById.spring-doc.cn

getId:要删除其引用实体的聚合根的 ID。spring-doc.cn

getDomainType:要删除的实体的类型。spring-doc.cn

findByIdspring-doc.cn

按 ID 选择聚合根spring-doc.cn

findById.spring-doc.cn

getId:要加载的实体的 ID。spring-doc.cn

getDomainType:要加载的实体的类型。spring-doc.cn

findAllspring-doc.cn

选择所有聚合根spring-doc.cn

findAll.spring-doc.cn

getDomainType:要加载的实体的类型。spring-doc.cn

findAllByIdspring-doc.cn

按 ID 值选择一组聚合根spring-doc.cn

findAllById.spring-doc.cn

getId:要加载的实体的 ID 值列表。spring-doc.cn

getDomainType:要加载的实体的类型。spring-doc.cn

findAllByProperty-<propertyName>spring-doc.cn

选择由另一个实体引用的一组实体。引用实体的类型用于前缀。引用的实体类型用作后缀。此方法已弃用。请改用 findAllByPathspring-doc.cn

所有方法。如果未为find*findAllByPathspring-doc.cn

getId:引用要加载的实体的实体的 ID。spring-doc.cn

getDomainType:要加载的实体的类型。spring-doc.cn

findAllByPath-<propertyPath>spring-doc.cn

选择另一个实体通过属性路径引用的一组实体。spring-doc.cn

所有方法。find*spring-doc.cn

getIdentifier:保存聚合根的 ID 以及所有路径元素的键和列表索引。Identifierspring-doc.cn

getDomainType:要加载的实体的类型。spring-doc.cn

findAllSortedspring-doc.cn

选择所有已排序的聚合根spring-doc.cn

findAll(Sort).spring-doc.cn

getSort:排序规范。spring-doc.cn

findAllPagedspring-doc.cn

选择聚合根页面,可选择排序spring-doc.cn

findAll(Page).spring-doc.cn

getPageable:分页规范。spring-doc.cn

countspring-doc.cn

计算用作 prefix 的类型的聚合根的数量spring-doc.cn

countspring-doc.cn

getDomainType:要计数的聚合根的类型。spring-doc.cn