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:/