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

  • 相关阅读:
    [原创]存储过程,insert,case when then,处理性别问题 Virus
    [原创]c#,数据结构,栈 Virus
    [原创]软件自动化测试和.NET中的反射 Virus
    [原创]反射,.NET,委托 Virus
    《博客园精华集--NET3.x分册》第三轮结果
    (翻译)《Expert .NET 2.0 IL Assembler》 详要目录 更新到第8章
    MSIL翻译中的问题贴
    (翻译)《Expert .NET 2.0 IL Assembler》 第一章 简单示例 1.2 简单示例(二)
    (翻译)《Expert .NET 2.0 IL Assembler》 第一章 简单示例 1.2 简单示例(一)
    第三轮进度汇总
  • 原文地址:https://www.cnblogs.com/happyday56/p/4661839.html
Copyright © 2020-2023  润新知