百度智慧雲年中特惠:新使用者首購 55 元 / 年
阿新 • • 發佈:2021-06-04
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);