SpringData--Repository接口及其子接口的应用-4

一 了解Repository接口

Repository是Spring Data的核心接口,是类似于Serializable的标志接口.

SpringData--Repository接口及其子接口的应用-4

可以通过两种方式提供实现:

1-继承

SpringData--Repository接口及其子接口的应用-4

2-注解

SpringData--Repository接口及其子接口的应用-4

测试:

SpringData--Repository接口及其子接口的应用-4

 

3-Repository的查询方法定义规则

 

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

弊端:

a-方法名比较长

b-对于复杂查询,依然难以实现

解决方案:@Query注解的应用

 

4- @Query注解

在Repository接口中使用,不需要遵循查询方法命名规则,使用非常灵活,常用.

案例1:查询最大id的user信息

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

案例2:根据参数条件查询用户信息

写法1:

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

写法2:

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

案例3:like的应用

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

案例4:原生SQL的使用

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

5- 增删改操作(必须结合事务)

Dao层: @[email protected]

Service层: @Transactional 注,根据项目需求及规范,只能在Service层添加事务,Dao层不建议使用

SpringData--Repository接口及其子接口的应用-4

在Dao层使用@[email protected]

SpringData--Repository接口及其子接口的应用-4

在Service层使用@Transactional

SpringData--Repository接口及其子接口的应用-4

测试Service

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

二 Repository的子接口

SpringData--Repository接口及其子接口的应用-4

设置好快捷键后

SpringData--Repository接口及其子接口的应用-4

可以看到Repository的子接口和子类.

 

*********************SpringData的高级应用**************************

 

三 CurdRepository接口

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

案例:向表中保存数据或保存数据集合

a-更为ORM映射的表名称(新建表)

SpringData--Repository接口及其子接口的应用-4

 

b-实现Dao层CRUD功能,通过继承CrudRepository

 

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

发现CrudRepository接口中的方法大部分都是DML操作,因此,需要放到Service中加入事务注解@Transactional才能进行测试.

c-编写Service,进行测试

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

四 PagingAndSortingRepository接口(实现分页和排序)

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

实际拥有的方法如下:

SpringData--Repository接口及其子接口的应用-4

案例:实现排序及分页功能

SpringData--Repository接口及其子接口的应用-4

编写测试类:

测试功能1:排序

SpringData--Repository接口及其子接口的应用-4

测试功能2:分页

SpringData--Repository接口及其子接口的应用-4

测试功能3:排序后进行分页

SpringData--Repository接口及其子接口的应用-4

 

五 JpaRepository接口

SpringData--Repository接口及其子接口的应用-4

接口方法定义:

@NoRepositoryBean public interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> { List<T> findAll(); List<T> findAll(Sort var1); List<T> findAll(Iterable<ID> var1); <S extends T> List<S> save(Iterable<S> var1); void flush(); <S extends T> S saveAndFlush(S var1); void deleteInBatch(Iterable<T> var1); void deleteAllInBatch(); T getOne(ID var1); <S extends T> List<S> findAll(Example<S> var1); <S extends T> List<S> findAll(Example<S> var1, Sort var2); }

所有方法如下:

SpringData--Repository接口及其子接口的应用-4

案例:测试getOne

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

六 JpaSpecificationExecutor接口

SpringData--Repository接口及其子接口的应用-4

Specification封装了JPA Criteria查询条件

案例:能够执行[分页]+[排序]+[追加查询条件]

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

SpringData--Repository接口及其子接口的应用-4

 

案例源代码:

SpringDataDemo

3.rar

27.52KB