CrudRepository接口中的方法理解

本文详细介绍了如何在Spring Data JPA中使用CrudRepository进行基础CRUD操作,包括添加、查询、更新和删除数据,以及如何利用@Query注解进行灵活的自定义查询。特别强调了@Modifying注解在执行修改操作时的作用。
摘要由CSDN通过智能技术生成

CrudRepository中的方法(这个接口提供了基本增删改查方法)

save(entity):添加一条数据
save(entities):添加多条数据entities为集合
findOne(id):根据id查询一条数据
exists(id):判断id是否存在
findAll():查询全部数据
delete(id):根据id删除数据
delete(entity):根据一条数据的信息删除数据
delete(entities):根据多条数据的信息删除数据
deleteAll():删除全部信息

一、Repository接口是什么

  • Repository是一个空接口,即:是一个标记接口,表示任何继承它的接口都是仓库接口类。

  • 若我们继承了Repository,则该接口会被Ioc容器表示为一个Repository Bean,放入到IOC容器中,进而可以在该接口中定义满足一定规范的方法。

  • 实际上也可以通过@RepositoryDefinition(domainClass = Person.class, idClass = Long.class)来替代继承Repository接口。

一、Repository接口是什么

1、@Query

1、可以执行自定义的JPQL语句以更灵活的查询

// 查询id最大的那个person
@Query("from Person p1 where p1.id = (select max(p2.id) from Person p2)")
Person getPersonByMaxId();

2、注解传递参数

1、使用占位符:参数顺序必须和JPQL中的顺序一致

@Query("from Person p where p.name = ?1 and p.gender = ?2")
Person query_getPersonByNameAndGender(String name, String gender);

2、使用命名参数:这种写法可以随便设置参数顺序

@Query("from Person p where p.name = :name and p.age = :age")
Person query_getPersonByNameAndAge(@Param("age") Integer age, @Param("name") String name);

@Param:org.springframework.data.repository.query.Param;
      3、spring data允许在占位符上添加%(适用于模糊查询like:%占位符%)

4、@Query支持原生sql查询

@Query(value = "select count(1) from t_person", nativeQuery = true)
Long getTotal();

2、@Modifying:可以使用该注解来实现通过JPQL修改和删除(JPQL不支持添加)

@Modifying
@Query(value = "update Person p set p.name = ?1, p.age = ?2 where p.id = ?3")
void updatePerson(String name, Integer age, Long id);

注意:更新和删除操作需要事务支持
在@Query中编写JPQL语句,但是必须添加@Modifying进行修饰来告诉JPA这是修改的操作
为什么@Query可以执行呢?
所有的Repository方法都有一个事务,但是却是只读事务


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值