1. 程式人生 > 資訊 >百度 Apollo:老玩家正被瘋狂追趕,錯過最佳“超車”時機

百度 Apollo:老玩家正被瘋狂追趕,錯過最佳“超車”時機


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