zoukankan      html  css  js  c++  java
  • Spring data JPA中使用Specifications动态构建查询

    有时我们在查询某个实体的时候,给定的条件是不固定的,这是我们就需要动态 构建相应的查询语句,在JPA2.0中我们可以通过Criteria接口查询,JPA criteria查询.相比JPQL,其优势是类型安全,更加的面向对象.而在Spring data JPA中相应的接口是JpaSpecificationExecutor,这个接口基本是围绕着Specification接口来定义的。 Specification接口中只定义了如下一个方法:

    我们只需要重写这个方法即可,相关知识请自行查阅JPA Criteria查询 

    过滤条件

    1:过滤条件会被应用到SQL语句的FROM子句中。在criteria 查询中,查询条件通过Predicate或Expression实例应用到CriteriaQuery对象上。

    2:这些条件使用 CriteriaQuery .where 方法应用到CriteriaQuery 对象上

    3:CriteriaBuilder也作为Predicate实例的工厂,通过调用CriteriaBuilder 的条件方法( equal,notEqual, gt, ge,lt, le,between,like等)创建Predicate对象。

    4:复合的Predicate 语句可以使用CriteriaBuilder的and, or andnot 方法构建。

    相关代码如下,在这个例子中我们定义了2个类Articel和User类

    Article:

    User:

    其中user和article是一对多的关系,是单向的

    封装的查询实体SearchArticle

    下面是查询方法

    其中的 ArticleRepository接口如下,spring data jpa不需要你自己实现dao的接口

    通过以上的步骤,我们就能构建相应的查询sql了,使用这个接口要对JPA2.0中Criteria查询有一定的了解

  • 相关阅读:
    iOS开发UI篇—Quartz2D使用(信纸条纹)
    iOS开发UI篇—Quartz2D简单使用(三)
    iOS开发UI篇—Quartz2D使用(图片剪切)
    a超链接之返回顶部的两种实现方法
    学习windows编程 day2 之滚动条使用
    首页轮播图
    商城动态菜单
    放大镜二:大图的移动
    放大镜一:图片上部添加可移动遮盖层
    php循环删除文件夹和目录
  • 原文地址:https://www.cnblogs.com/happyday56/p/4661839.html
Copyright © 2011-2022 走看看