SpringBoot-Spring Data Jpa使用(二)-阿里云开发者社区

开发者社区> meijm0103> 正文

SpringBoot-Spring Data Jpa使用(二)

简介:
+关注继续查看

JpaSpecificationExecutor简介

spring data jpa中负责jpa查询的接口,封装了常用的基于对象查询的各种方法,与第一篇中介绍的几种查询方式相比最大优势是是可以动态指定查询条件,但是查询结果目测只能以实体进行封装。

接口说明

  • JpaSpecificationExecutor接口说明
接口名称 说明
Optional findOne(@Nullable Specification spec); 查询一个实体
List findAll(@Nullable Specification spec); 指定查询条件查询
Page findAll(@Nullable Specification spec, Pageable pageable); 分页查询
List findAll(@Nullable Specification spec, Sort sort); 排序查询
long count(@Nullable Specification spec); 查询总数

注意事项:通过上面的接口我们会发现一个很诡异的问题,就是分页查询和排序好像不能同时存在,其实Pageable是有多个实现的,除了通常只有关于分页的查询之外还有一个PageRequest,这个类可以支持排序和分页共存。使用方法为PageRequest.of(int page, int size, Sort sort);

  • Specification接口说明 
    这个接口下包含一个接口用于构建查询条件
Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder);

还有4个静态方法,静态方法分别是where,not,and,or参数为Specification.当查询条件可复用时可专门构建一个产生查询条件的工厂,并在查询时使用静态方法进行连接。

JPA查询说明

  • 参数说明: 
    参数Root:查询根,join ,fetch深度获取,当属性为集合时使用 
    参数CriteriaQuery:查询主体,可增加groupBy,distinct,having, 
    参数CriteriaBuilder:构建查询条件及一些基础函数 
    返回值Predicate:条件组合

本来想写一些具体的例子,发现一个大神整理的jpa api用法汇总,就不献丑了。

其他

  • spirng boot jpa中获取EntityManager,获取之后可以在service中使用原生jpa代码构建jpql
@Autowired
 private JpaContext jpaContext;
 public EntityManager getEm(){
  return jpaContext.getEntityManagerByManagedType(实体类.class);
 }
  • 简化jpa语法的工具包,有兴趣可以研究下
    1. QueryDSL介绍官网,官方支持功能强大,包也大。。
    2. jpa-spec介绍github,大神写的工具包,包小,简化构建Predicate 方法。

参考资料

https://www.baeldung.com/rest-api-search-language-spring-data-specifications 
http://www.importnew.com/24514.html 
https://lufficc.com/blog/spring-boot-jpa-querydsl 
http://www.cnblogs.com/xingqi/p/3929386.html



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android开发教程 - 使用Data Binding(四)在Fragment中的使用
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 ...
905 0
Android开发教程 - 使用Data Binding(五)数据绑定
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 ...
824 0
Android开发教程 - 使用Data Binding(七)使用BindingAdapter简化图片加载
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 ...
775 0
使用jpa在postgresql数据库中创建主键自增表
jpa依赖 org.springframework.boot spring-boot-starter-data-jpa org.
2631 0
【spring boot】11.spring-data-jpa的详细介绍和复杂使用
这篇专门用来对spring-data-jpa的详细介绍和复杂使用做一个阐述。 参考文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
1069 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
9340 0
Android开发教程 - 使用Data Binding(三)在Activity中的使用
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 ...
851 0
Android开发教程 - 使用Data Binding(八)使用自定义Interface
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 ...
894 0
Data Binding的使用详解
PS:该文章只是个人总结记录,留给新手使用data binding的讲解文章,只讲解基本配置和用法,高手绕道! 首先,环境搭建: Android 的 Gradle 插件版本不低于 1.5.0-alpha1: classpath 'com.android.tools.build:gradle:1.5.0' 然后修改对应模块(Module)的 build.gradle的android节点下添加: dataBinding { enabled = true } 注意:build一下,然后你就可以在项目中尽情的使用data binding了。
902 0
+关注
meijm0103
知其然,知其所以然
55
文章
5
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载