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 没有正确渲染片段