1. 程式人生 > >Spring Data JPA 複雜/多條件組合查詢

Spring Data JPA 複雜/多條件組合查詢

1: 編寫DAO類或介面  dao類/介面 需繼承
  1. publicinterface JpaSpecificationExecutor<T>  
       介面;        如果需要分頁,還可繼承  
  1. publicinterface PagingAndSortingRepository<T, ID extends Serializable> extends CrudRepository<T, ID>  
        介面。 2. 
  1. publicinterface JpaSpecificationExecutor<T>  
介面具有
  1. Page<T> findAll(Specification<T> spec, Pageable pageable);  //分頁按條件查詢
  2. List<T> findAll(Specification<T> spec);    //不分頁按條件查詢
方法。 我們可以在Service層呼叫這兩個方法。    兩個方法都具有 Specification<T> spec 引數,用於設定查詢條件。 Service 分頁+多條件查詢 呼叫示例:
  1. studentInfoDao.findAll(new Specification<StudentInfo> () {  
  2.    public Predicate toPredicate(Root<StudentInfo> root,  
  3.      CriteriaQuery<?> query, CriteriaBuilder cb) {  
  4.     Path<String> namePath = root.get("name");  
  5.     Path<String> nicknamePath = root.get("nickname");  
  6.     /** 
  7.          * 連線查詢條件, 不定引數,可以連線0..N個查詢條件 
  8.          */
  9.     query.where(cb.like(namePath, "%李%"
    ), cb.like(nicknamePath, "%王%")); //這裡可以設定任意條查詢條件
  10.     returnnull;  
  11.    }  
  12.   }, page);  
  13.  }  
這裡通過CriteriaBuilder 的like方法建立了兩個查詢條件, 姓名(name)欄位必須包含“李”, 暱稱(nickname)欄位必須包含“王”。 然後通過
  1. CriteriaQuery<T> where(Predicate... restrictions);  
連線多個查詢條件即可。  這種方式使用JPA的API設定了查詢條件,所以不需要再返回查詢條件Predicate給Spring Data Jpa,故最後return null;即可。

相關推薦

Spring Data JPA 複雜/條件組合查詢

1: 編寫DAO類或介面  dao類/介面 需繼承 publicinterface JpaSpecificationExecutor<T>          介面;        如果需要分頁,還可繼承   publicinterface Pa

spring data jpa 實現條件複雜查詢表聯查

最近發現JPA在處理單表時,很方便,但多表就比較複雜了。今天寫一下端午這兩天琢磨的多條件查詢,還有多表聯查。文章比較長,大部分都是程式碼,不願意看的程式碼copy下去,直接可以實現;想交流的可以看完,然後留言交流。maven依賴啊,配置,繼承寫法等知識點不展開說了,之前寫過一

spring data jpa】帶有條件查詢後分頁和不帶條件查詢後分頁實現

一.不帶有動態條件的查詢 分頁的實現  例項程式碼: controller:返回的是Page<>物件 @Controller@RequestMapping(value = "/egg")  publicclass EggController {   @

Spring Data JPA 實現表關聯查詢

多表查詢在spring data jpa中有兩種實現方式,第一種是利用hibernate的級聯查詢來實現,第二種是建立一個結果集的介面來接收連表查詢後的結果,這裡介紹第二種方式。 一、一對一對映 實體 UserInfo :使用者。 實體 Address

Spring Data JPA複雜查詢

在使用Spring Data JPA框架時,可以按照符合框架規則的自定義方法或@Query進行固定條件查詢。如果是動態條件查詢框架也提供了介面。 public interface JpaSpecificationExecutor<T> 1.符合框架規則的自定義方法:

JPA條件組合查詢,表關聯查詢,資料條數(CriteriaQuery)

JPA多條件組合查詢(CriteriaQuery) /**查詢Demo結果集 * @return */ public List<Demo> findDemoList(ParamVO param,Pageable pageabl

Spring data jpa 複雜動態查詢方式總結

一.Spring data jpa 簡介 首先我並不推薦使用jpa作為ORM框架,畢竟對於負責查詢的時候還是不太靈活,還是建議使用mybatis,自己寫sql比較好.但是如果公司用這個就沒辦法了,可以學習一下,對於簡單查詢還是非常好用的.     首先JPA是Java

SpringBoot中使用Spring Data Jpa 實現簡單的動態查詢的兩種方法

ppr eat value table 得到 blog .net ride integer 首先謝謝大佬的簡書文章:http://www.jianshu.com/p/45ad65690e33# 這篇文章中講的是spring中使用spring data jpa,使用了xml配

Spring Boot的Spring-data-jpa資料來源配置實戰

一 新建pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>

使用mybatis的動態sql來完成 SQL 條件組合查詢(模糊查詢

對於一般的模糊查詢,沒有使用框架的連結部落格地址:點選這裡 對於mybatis,框架內部欸出了處理方式,即使用mybatis的內建標籤和OGNL表示式 mybatis在select,update,delete,insert等標籤中加入了 if choose (when, ot

條件組合查詢

一、效果圖 二、前端程式碼 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Jquery分類</t

億級資料條件組合查詢——秒級響應解決方案

1 概述 組合查詢為多條件組合查詢,在很多場景下都有使用。購物網站中通過勾選類別、價格、銷售量範圍等屬性來對所有的商品進行篩選,篩選出滿足客戶需要的商品,這是一種典型的組合查詢。在小資料量的情況下,後臺通過簡單的sql語句便能夠快速過濾出需要的資料,但隨著資料量

SpringData jpa 實現條件動態查詢,分頁功能

問題由來: 剛開始使用springdata的時候,只會用findByName這樣的簡單查詢,這樣寫dao層確實非常的快,但是在我們做篩選功能的時候,這樣的查詢似乎很難滿足我們的需求,但是都已經用上的springdata又不想再去寫mybatis這樣在xml裡面判

Spring Data JPA 實現表聯查的另一種方式

       通過封裝實體類來實現多表聯查的方式,利用Spring Data JPA @Query定義中的SpEL中的 ( rd.orderId=:#{#orderPageReq.orderId} or :#{#orderPageReq.orderId} is null

solr的條件組合查詢和solr的範圍查詢

存在問題:為了減輕資料庫的訪問壓力,往往我們將必要的資料儲存到solr中,並給部分欄位建立索引,此時在查詢資料的時候可以通過solr查詢,這樣就大大的提高了查詢的效率。但是以下這個問題困擾很多初學者。包括博主我自己,那就是solr的多條件組合查詢和solr的範圍查詢,在研究

Spring data JPA使用Specification實現動態查詢例子

實體類 package com.net263.domain; import java.math.BigDecimal; import java.util.Date; import javax.persistence.Column; import jav

hibernate 條件組合查詢 之 sql 拼接

public static void main(String[] args) { Session session = null; Transaction tx = null; List list = null;

Spring Data JPA 動態拼接條件的通用設計模式

記住官方文件永遠是首選 import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import javax.persistence.criteria.Crit

linq to sql 條件組合查詢

//一個條件一個條件串接 using System.Linq.Expressions; Expression<Func> exps = A => true; if (GroupId != "0") { Expression<Func>

spring-data-jpa 複雜檢索實現

由於公司專案第一次接觸到 spring-data-jap 框架約定的實現方式 檢索實現方式 後來發現這種實現方式的問題 後端接到引數以後無法直接處理 後期提出兩種方案來實現修改資料1,在過濾器中攔截 修改引數2,用aop 實現修改 菁實驗兩種方式都無法實現修改,由於我本人是個