标签:getter hellip ash str 数据 使用 数据库表 ring OLE
本文介绍三种不同的Spring Data repository和它们的功能,包含以下三种:
Repository
接口,但是,除此之外,它们每个又有不同的功能。首先介绍JpaRepository
,它继承自PagingAndSortingRepository
,而PagingAndSortingRepository
又继承自CrudRepository
。
每个都有自己的功能:
由于三者之间的继承关系,所以JpaRepository包含了CrudRepository和PagingAndSortingRepository所有的API。
当我们不需要JpaRepository和PagingAndSortingRepository提供的功能时,可以简单使用CrudRepository。
下面我们通过例子更好地理解它们提供的API。
首先创建Product实体:
@Entity
public class Product {
@Id
private long id;
private String name;
// getters and setters
}
然后实现通过名称查询Product的操作:
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
Product findByName(String productName);
}
这样就实现了通过名称查询Product的方法,Spring Data Repository根据方法名自动生成相应的实现。
先看下CrudRepository
接口的源码:
public interface CrudRepository<T, ID extends Serializable>
extends Repository<T, ID> {
<S extends T> S save(S entity);
T findOne(ID primaryKey);
Iterable<T> findAll();
Long count();
void delete(T entity);
boolean exists(ID primaryKey);
}
方法功能介绍:
PagingAndSortingRepository接口的源码如下:
public interface PagingAndSortingRepository<T, ID extends Serializable>
extends CrudRepository<T, ID> {
Iterable<T> findAll(Sort sort);
Page<T> findAll(Pageable pageable);
}
该接口提供了findAll(Pageable pageable)
这个方法,它是实现分页的关键。
使用Pageable时,需要创建Pageable对象并至少设置下面3个参数:
lastName
升序排序,下面代码展示如何使用PageRequest和Sort获取这个结果:Sort sort = new Sort(new Sort.Order(Direction.ASC, "lastName"));
Pageable pageable = new PageRequest(0, 5, sort);
JpaRepository接口源码:
public interface JpaRepository<T, ID extends Serializable> extends
PagingAndSortingRepository<T, ID> {
List<T> findAll();
List<T> findAll(Sort sort);
List<T> save(Iterable<? extends T> entities);
void flush();
T saveAndFlush(T entity);
void deleteInBatch(Iterable<T> entities);
}
简单介绍下每个方法的作用:
尽管Spring Data Repositories有很多优点,但是它们也有缺点:
(转)CrudRepository JpaRepository PagingAndSortingRepository之间的区别
标签:getter hellip ash str 数据 使用 数据库表 ring OLE
原文地址:https://www.cnblogs.com/-wanglei/p/11125465.html