前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring JPA 核心概念

Spring JPA 核心概念

作者头像
Kindear
发布2020-08-28 14:42:27
7910
发布2020-08-28 14:42:27
举报
Spring JPA 核心概念

翻译: Core concepts

Spring数据存储库抽象中的中心接口是repository。它采用要管理的域类以及域类的ID类型作为类型参数。此接口主要充当标记接口,以捕获要使用的类型,并帮助您发现扩展此接口的接口。CrudRepository为被管理的实体类提供了复杂的CRUD功能。

例3:**CrudRepository** 接口

代码语言:javascript
复制
public interface CrudRepository<T, ID> extends Repository<T, ID> {

  <S extends T> S save(S entity);      //保存指定的实体

  Optional<T> findById(ID primaryKey); //返回给定id的实体

  Iterable<T> findAll();               //返回所有实体

  long count();                        //统计实体个数

  void delete(T entity);               //删除给定的实体

  boolean existsById(ID primaryKey);   //判断给定id的实体是否存在

  // … more functionality omitted.
}

我们还提供特定于持久性技术的抽象,例如JpaRepositoryMongoRepository。这些接口扩展了CrudRepository,在CrudRepository的通用接口外,还增加拓展了公开了其他基础持久性技术的接口功能。

​ 在CrudRepository之上,有一个PagingAndSortingRepository抽象接口,它添加了其他方法来简化对实体的分页访问:

例4:**PagingAndSortingRepository**接口

代码语言:javascript
复制
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

​ 获取页面大小为20的user实体列表第二页的代码如下所示:

代码语言:javascript
复制
PagingAndSortingRepository<User, Long> repository = // … get access to a bean
Page<User> users = repository.findAll(PageRequest.of(1, 20));

注:Page从0开始

​ 除了查询方法之外,还可以使用计数和删除查询的查询派生。以下列表显示派生计数查询的接口定义:

例5:计数查询派生

代码语言:javascript
复制
interface UserRepository extends CrudRepository<User, Long> {

  long countByLastname(String lastname);
}

​ 以下列表显示了派生的删除查询的接口定义:

例6:删除查询派生

代码语言:javascript
复制
interface UserRepository extends CrudRepository<User, Long> {

  long deleteByLastname(String lastname);

  List<User> removeByLastname(String lastname);
}

附注:SpringBoot 项目分页查询Demo

Dao

代码语言:javascript
复制
public interface ShipDao extends JpaRepository<ShipPO,Integer> {  
    Page<ShipPO> findByRegion(String region,Pageable pageable);  
}

Service

代码语言:javascript
复制
@RequestMapping(value = "/ship",method = RequestMethod.GET)
    public List<ShipPO> GetShip( 
            @RequestParam(value = "region",required = false,defaultValue = "none") String region
    ){
            Pageable pageable = PageRequest.of(page,5, Sort.by(Sort.Direction.DESC,"sdate"));
            //无区域限制
                //根据地区查询,有地区限制 无状态限制
            shiplist = shipDao.findByRegion(region,pageable).get().collect(Collectors.toList());

        return shiplist;
    }

下一篇:【Spring JPA 查询】

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring JPA 核心概念
  • 附注:SpringBoot 项目分页查询Demo
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档