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
    评论
您好,感谢您的提问。创建一个 Spring Data JPA 的 Repository 接口非常简单,只需要按照以下步骤操作即可: 1. 创建一个继承自 `JpaRepository` 的接口,指定实体和主键型: ``` public interface UserRepository extends JpaRepository<User, Long> { } ``` 其中,`User` 是您的实体,`Long` 是实体的主键型。`JpaRepository` 是 Spring Data JPA 提供的一个基础 Repository 接口,提供了一些基本的数据操作方法,如插入、删除、更新、查询等。 2. 在您的实体上添加注解,指定表名和主键: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; // 省略 getter 和 setter 方法 } ``` 在上述代码中,`@Entity` 注解表示该是一个 JPA 实体,`@Table(name = "user")` 指定该实体对应的数据库表名为 `user`,`@Id` 和 `@GeneratedValue` 注解指定实体的主键。 3. 在您的 Spring Boot 应用程序中,使用 `@EnableJpaRepositories` 注解启用 Spring Data JPA,并指定 Repository 接口的包路径: ``` @SpringBootApplication @EnableJpaRepositories(basePackages = "com.example.repository") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 在上述代码中,`@EnableJpaRepositories` 注解用于启用 Spring Data JPA,`basePackages` 属性指定 Repository 接口的包路径。 4. 在您的服务层或控制器中注入 Repository 接口,即可使用 Spring Data JPA 提供的基本数据操作方法: ``` @RestController public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/users") public List<User> getAllUsers() { return userRepository.findAll(); } } ``` 在上述代码中,`@Autowired` 注解用于自动注入 `UserRepository` 对象,然后在 `getAllUsers` 方法中调用 `findAll` 方法获取所有用户信息。 通过上述步骤创建一个 Spring Data JPA 的 Repository 接口非常简单,希望能够帮助到您。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

油炸小波

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

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

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

打赏作者

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

抵扣说明:

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

余额充值