Spring Data MyBatis

基于 MyBatis 的 Spring Data 扩展
授权协议 Apache
开发语言 Java
所属分类 程序开发、 Spring Data 扩展
软件类型 开源软件
地区 国产
投 递 者 陶鹏
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Spring Data 项目的主要目标是使构建使用数据访问技术的 Spring 应用程序变得更加容易。此模块处理增强基于 MyBatis 的数据访问层的支持。

通过使用此模块,你可以在基于MyBatis为ORM的结构下使用Spring Data模式带来的便利性。

如果你还没有接触过Spring Data,建议先了解下该项目

支持的一些特性

  • 对标准Entity支持完整CRUD操作

  • 支持通过接口中的方法名生成对应的查询

  • 提供基础属性的实体基类

  • 支持透明审计(如创建时间、最后修改)

  • 自持自定义编写基于MyBatis的查询,方便而不失灵活性

  • 方便的与Spring集成

  • 支持MySQL、Oracle、SQL Server、H2、PostgreSQL等数据库

获得帮助

这里有一份文档可以帮助你快速学习 Spring Data Mybatis。 reference documentation

如果你有任何疑问或者建议,可以录一个issue 给我。

快速开始

通过 Maven 引入依赖包:

<dependency>
  <groupId>com.ifrabbit</groupId>
  <artifactId>spring-data-mybatis</artifactId>
  <version>1.0.8.RELEASE</version>
</dependency>

最简单的通过Java注解配置的Spring Data Mybatis 配置如下所示:

@Configuration
@EnableMybatisRepositories(
        value = "org.springframework.data.mybatis.repository.sample",
        mapperLocations = "classpath*:/org/springframework/data/mybatis/repository/sample/mappers/*Mapper.xml"
)
public class TestConfig {

    @Bean
    public DataSource dataSource() throws SQLException {
        return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).addScript("classpath:/test-init.sql").build();
    }

    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        return factoryBean;
    }

    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

}

创建一个实体类:

@Entity
public class User extends LongId {

  private String firstname;
  private String lastname;
       
  // Getters and setters
  // (Firstname, Lastname)-constructor and noargs-constructor
  // equals / hashcode
}

创建一个数据操作接口,使用包名 com.example.repositories:

public interface UserRepository extends CrudRepository<User, Long> {
  List<User> findByLastname(String lastname);  
  
}

编写一个测试用例:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppConfig.class)
public class UserRepositoryIntegrationTest {
     
  @Autowired UserRepository repository;
     
  @Test
  public void sampleTestCase() {
    User dave = new User("Dave", "Matthews");
    dave = repository.save(dave);
         
    User carter = new User("Carter", "Beauford");
    carter = repository.save(carter);
         
    List<User> result = repository.findByLastname("Matthews");
    assertThat(result.size(), is(1));
    assertThat(result, hasItem(dave));
  }
}

这样就完成了。

使用 Spring Boot

通过maven引入:

<dependency>
    <groupId>com.ifrabbit</groupId>
    <artifactId>spring-boot-starter-data-mybatis</artifactId>
    <version>1.0.8.RELEASE</version>
</dependency>

如果你需要使用自己编写的Mybatis Mapper,需要在application.properties中配置:

spring.data.mybatis.mapper-locations=classpath*:/org/springframework/data/mybatis/samples/mappers/*Mapper.xml

在Spring Boot中你不需要自己去定义SqlSessionFactory.

完整的代码如下:

@SpringBootApplication
public class SpringDataMybatisSamplesApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringDataMybatisSamplesApplication.class, args);
    }

    @Bean
    public CommandLineRunner dummyCLR(ReservationRepository reservationRepository) {
        return args -> {
            Stream.of("Tom", "Jack", "Apple")
                    .forEach(name -> reservationRepository.save(new Reservation(name)));
        };
    }

}

@RepositoryRestResource // here we use RepositoryRestResource
interface ReservationRepository extends MybatisRepository<Reservation, Long> {
}

@Entity
class Reservation extends LongId {

    private String reservationName;

    public Reservation() {
    }

    public Reservation(String reservationName) {
        this.reservationName = reservationName;
    }

    public String getReservationName() {
        return reservationName;
    }

    @Override
    public String toString() {
        return "Reservation{" +
                "reservationName='" + reservationName + '\'' +
                '}';
    }
}

完整的例子可以在 https://github.com/hatunet/spring-data-mybatis-samples 找到。

  • mybatis与spring data jpa的功能区别 1. spring data jpa实现了jpa(java persistence api)功能,即可以实现pojo转换为关系型数据库记录的功能,通俗来讲就是可以不写任何的建表sql语句了。jpa是spring data jpa功能的一个子集。 而mybatis并没有jpa功能,建表语句还是要自己写的。   2. spring data j

  • Spring Data JPA 与 MyBatis对比 Spring Data JPA是Spring Data的子模块。使用Spring Data,使得基于“repositories”概念的JPA实现更简单和容易。Spring Data JPA的目标是大大简化数据访问层代码的编码。作为使用者,我们只需要编写自己的repository接口,接口中包含一些个性化的查询方法,Spring Data JP

  • Spring Data JPA 是Spring Data的子模块。使用Spring Data,使得基于“repositories”概念的JPA实现更简单和容易。Spring Data JPA的目标是大大简化数据访问层代码的编码。作为使用者,我们只需要编写自己的repository接口,接口中包含一些个性化的查询方法,Spring Data JPA将自动实现查询方法。 JPA默认使用 hiberna

  • Spring 概述 Spring是一个开源框架,是一个IOC(DI)和AOP容器框架,可以让简单的JavaBean实现EJB才有的功能。 EJB EJB是Enterprise Java Beans技术的简称, 又被称为企业Java Beans 简单来说EJB就是把编写的软件里需要执行任务的类打包放在服务器上,客户端需要的时候再对服务器上的类进行调用 POJO POJO(Plain Ordinary

  • Java Persistence API)即Java持久化API,简称JPA,是一种ORM规范,JPA仅定义接口规范,实现这一规范的框架有Hibernate等。 Spring Data Jpa是对基于JPA的数据访问层的增强支持,底层使用Hibernate框架,支持使用原生SQL或JPQL查询语言。 使用Spring Data Jpa仅需要定义接口,并继承JpaRepository接口,不需要编写

  • Spring与Mybatis的简单整合 首先创建一个maven模块,在该模块下首先分别搭建出Mybatis的基础运行环境(Mybatis程序能够运行起来,配置项都准备好)和Spring的运行环境(Spring的xml配置文件,实体类等) 1、Mybatis基础环境搭建 数据库采用之前已经创建好Mybatis01中的users表,创建实体类user: package com.kevin.pojo;

  • 今天复习了一下springboot,正好看到这个地方。记录一下 1.概述 Spring Data JPA可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。M

 相关资料
  • 问题背景 之前做springboot项目在操作数据库方面一直在使用的是Mybatis,最近在查阅资料的时候接触到了SpringData JPA与SpringData JDBC,想问一下大佬们,这三个框架如何选型

  • 问题内容: 是否可以在应用程序中同时具有MyBatis的基于XML +注释的配置。 我之所以这样问,是因为在我的应用程序中,我使用的是基于注释的方法。但是在一种情况下,我需要使用IN子句,可以使用 基于XML的配置。 但是,当我启动应用程序时,它似乎无法识别基于注释的映射器,并给了我一个例外。 因此,我想知道是否可以在应用程序中同时具有MyBatis的基于XML + Annotation的配置。请

  • 在Ralf Hinze的“程序优化的Kan扩展”中,有一个列表类型的定义,它是基于从单子类中的遗忘函子的右Kan扩展(第7.4节)。本文给出了如下Haskell实现: 我能够定义通常的nil和cons构造函数:

  • 目前,我有个问题。我可以在mongodb中使用聚合函数查询相应的数据,但是在使用springdatamongodb后,我发现lookup不能使用变量将string转换为objectid,那么该如何编写这个聚合函数呢 如何在spring data mogodb中将其写成mongodb表达式

  • 本文向大家介绍Spring Boot基础入门之基于注解的Mybatis,包括了Spring Boot基础入门之基于注解的Mybatis的使用技巧和注意事项,需要的朋友参考一下 前言 今天学习下SpringBoot集成mybatis,集成mybatis一般有两种方式,一个是基于注解的一个是基于xml配置的。今天先了解下基于注解的mybatis集成。下面话不多说了,来一起看看详细的介绍吧 一、引入依赖

  • 本文向大家介绍基于Java代码配置MyBatis Generator,包括了基于Java代码配置MyBatis Generator的使用技巧和注意事项,需要的朋友参考一下 使用MyBatis Generator生成器时,有时候没办法使用xml形式的配置文件,比如将Maven项目设置成pom打包方式(<packaging>pom</packaging>)!由于Maven的工作机制对于打包方式为pom

  • 本文向大家介绍Spring与Mybatis基于注解整合Redis的方法,包括了Spring与Mybatis基于注解整合Redis的方法的使用技巧和注意事项,需要的朋友参考一下 基于这段时间折腾redis遇到了各种问题,想着整理一下。本文主要介绍基于Spring+Mybatis以注解的形式整合Redis。废话少说,进入正题。   首先准备Redis,我下的是Windows版,下载后直接启动redis

  • 本文向大家介绍springboot基于Mybatis mysql实现读写分离,包括了springboot基于Mybatis mysql实现读写分离的使用技巧和注意事项,需要的朋友参考一下 近日工作任务较轻,有空学习学习技术,遂来研究如果实现读写分离。这里用博客记录下过程,一方面可备日后查看,同时也能分享给大家(网上的资料真的大都是抄来抄去,,还不带格式的,看的真心难受)。 完整代码:https:/