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

一 了解Repository接口

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

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

1-继承

2-注解

测试:

 

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

 

 

 

 

 

弊端:

a-方法名比较长

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

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

 

4- @Query注解

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

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

 

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

写法1:

 

写法2:

 

案例3:like的应用

 

案例4:原生SQL的使用

 

 

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

Dao层: @Modifying+@Query

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

在Dao层使用@Modifying+@Query

在Service层使用@Transactional

测试Service

 

 

二 Repository的子接口

设置好快捷键后

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

 

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

 

三 CurdRepository接口

 

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

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

 

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

 

 

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

c-编写Service,进行测试

 

 

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

 

实际拥有的方法如下:

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

编写测试类:

测试功能1:排序

测试功能2:分页

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

 

五 JpaRepository接口

接口方法定义:

@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); }

所有方法如下:

案例:测试getOne

 

 

六 JpaSpecificationExecutor接口

Specification封装了JPA Criteria查询条件

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

 

 

 

案例源代码:

SpringDataDemo

3.rar

27.52KB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油炸小波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值