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查询有一定的了解

  • 相关阅读:
    sentinel集群刚开始好的,过几分钟就崩了
    redis主从文件权限问题
    centos7下解决keepalived双机都为master问题
    windows局域网共享文件夹
    最近JS的一些问题
    总结下html、css的一些东西
    Less、一些选择器
    常见布局、媒体查询
    audio标签、HOVER效果、rgba和opacity、隐藏场景
    护工列表页
  • 原文地址:https://www.cnblogs.com/happyday56/p/4661839.html
Copyright © 2011-2022 走看看