Spring Data

Posted 旋转的格子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Data相关的知识,希望对你有一定的参考价值。


public interface RoleRepository extends JpaRepository<Role, Long>{
role getByName(String name);
}
JpaRepository<Role, Long>接口,他的父接口PagingAndSortingRepository提供了分页和排序方法,父父接口CrudRepository开启了事务功能,提供了增删改方法,源接口Repository提供了repository规范。范型第一个填javabean,第二个填主键类型。

条件查询规范(源接口的功能)



举个例子。以下这个方法名的效果就是,where lastName like ?% and id<?
List(Person) getByLastNameStartingWithAndIdLessThan(String lastName,Integer id);
再举一个例子。where email in (?,?,?,-----) or birth < ?
List(Person) getByEmailInOrBirthLessThan(List(String) emails,Date birth)
看着很方便,但是不够灵活去处理复杂的查询业务,名字太长不好。

使用@query注解(源接口的功能)

@Query("select * from Person p where p.name=?1 and p.email=?2", nativeQuery = true)
List(Person)test1(String Name,String email);
?1,?2是占位符,顺序和参数顺序对应。
最好加上nativeQuery = true,这样就能使用sql。

CrudRepository接口提供的功能

public interface CrudRepository<T, ID> extends Repository<T, ID> {
<S extends T> S save(S var1);//保存

<S extends T> Iterable<S> saveAll(Iterable<S> var1);

Optional<T> findById(ID var1);

boolean existsById(ID var1);

Iterable<T> findAll();

Iterable<T> findAllById(Iterable<ID> var1);

long count();

void deleteById(ID var1);

void delete(T var1);

void deleteAll(Iterable<? extends T> var1);

void deleteAll();

PagingAndSortingRepository接口提供的功能

` public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
Iterable<T> findAll(Sort var1);

Page<T> findAll(Pageable var1);
 }`
`例子:
@Autowired
private PersonRepository pRepository;
public void test2(){
int pageNo = 0;//第一页
int pageSize = 5;
PageRequest pageable=new PageRequest(pageNo,pageSize);
Page(Person) page= pRepository.findAll(pageable);

page.getTotalElements();//总记录数
page.getNumber()+1;//当前是第几页
page.getTotalPages;//总页数
//--------------------------------------
//排序
Order o1=new Order(Direction.DESC,"id");
Order o2=new Order(Direction.ASC,"email");
---
Sort sort=new Sort(o1,o2,---);
PageRequest pageable=new PageRequest(pageNo,pageSize,sort);
//同分页了
}`

jpaRepository接口提供的功能

List<T> findAll();

List<T> findAll(Sort var1);

List<T> findAllById(Iterable<ID> var1);

<S extends T> List<S> saveAll(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);

以上是关于Spring Data的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

[React Testing] Use Generated Data in Tests with tests-data-bot to Improve Test Maintainability(代码片段

Spring boot:thymeleaf 没有正确渲染片段

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题