jpa自定義sql語句

来源:https://www.cnblogs.com/share-record/archive/2020/02/04/12262127.html
-Advertisement-
Play Games

/** * 查詢還沒生成索引的帖子 * @return */ @Query(value = "SELECT * FROM t_article WHERE index_state=0",nativeQuery = true) public List<Article> getArticleNoIndex ...


 /**
     * 查詢還沒生成索引的帖子
     * @return
     */
    @Query(value = "SELECT * FROM t_article WHERE index_state=0",nativeQuery = true)
    public List<Article> getArticleNoIndex();

    /**
     * 更改索引為true
     */
    @Transactional
    @Modifying
    @Query(value = "UPDATE t_article SET index_state = TRUE  WHERE id =?1",nativeQuery = true)
    public void updateArticleIndex(Integer id);

簡單例子:

@Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")
List<Book> findByPriceRange(long price1, long price2);

 

 

Like表達式:

@Query(value = "select name,author,price from Book b where b.name like %:name%")
List<Book> findByNameMatch(@Param("name") String name);

 

 

使用Native SQL Query(nativeQuery=true則使用原生SQL預設HQL)[/b][/color][/size]
所謂本地查詢,就是使用原生的sql語句(根據資料庫的不同,在sql的語法或結構方面可能有所區別)進行查詢資料庫的操作

@Query(value = "select * from book b where b.name=?1", nativeQuery = true)
List<Book> findByName(String name);

 

 

使用@Param註解註入參數

@Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")
List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author,
        @Param("price") long price);

 

SPEL表達式(使用時請參考最後的補充說明)[/b]
'#{#entityName}'值為'Book'對象對應的數據表名稱(book)。

public interface BookQueryRepositoryExample extends Repository<Book, Long>{
       @Query(value = "select * from #{#entityName} b where b.name=?1", nativeQuery = true)
       List<Book> findByName(String name);

}

 

註:

1)update或delete時必須使用@Modifying和@Transactional對方法進行註解,才能使得ORM知道現在要執行的是寫操作

2)有時候不加@Param註解參數,可能會報如下異常:

org.springframework.dao.InvalidDataAccessApiUsageException: Name must not be null or empty!; nested exception is java.lang.IllegalArgumentException: Name must not be null or empty!

3)當使用集合作為條件時,可參考此處的ids

@Transactional
@Modifying
@Query("update ShopCoupon sc set sc.deleted = true where sc.id in :ids")
public void deleteByIds(@Param(value = "ids") List<String> ids);

 

摘自其他文章,如有侵權,請立即聯繫我


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文地址: "使用typescript改造koa開發框架" 強類型的 TypeScript 開發體驗和維護項目上相比 JavaScript 有著明顯的優勢,那麼對常用的腳手架進行改造也就勢在必行了。 接下來開始對基於 koa 框架的 node 後端腳手架進行改造: 1. 項目開發環境 和 types ...
  • str.toString() 可以把字元串、數值、布爾值、對象轉為字元串 String(str) 任何數值強制轉換為字元串類型 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> ...
  • 事件對象 jQuery事件對象其實就是js事件對象的一個封裝,處理了相容問題 e.data 存儲綁定事件時傳遞的附件數據 傳入e, 再console.log(e)可以查看 //100,註冊的時候的時候,把100傳到事件裡面去。 var money = 100; //on(types, selecto ...
  • 事件解綁與事件觸發 $("p").off("click"); $("#btn").on("click", function () { //觸發p元素的點擊事件 //$("p").click(); $("p").trigger("click"); }); ...
  • Kafka系列1:Kafka概況 Kafka是當前分散式系統中最流行的消息中間件之一,憑藉著其高吞吐量的設計,在日誌收集系統和消息系統的應用場景中深得開發者喜愛。本篇就聊聊Kafka相關的一些知識點。主要包括以下內容: Kafka簡介 Kafka特點 Kafka基本概念 Kafka架構 Kafka的 ...
  • 學習要求: 知道一點兒函數式介面和Lambda表達式的基礎知識,有利於更好的學習。 1.先體驗一下Stream的好處 需求:給你一個ArrayList用來保存學生的成績,讓你列印出其中大於60的成績。 解決方案二: 使用Stream流操作,只需要一行代碼 2.什麼是Stream流? 在Jdk1.8中 ...
  • 一、 Calendar解析 package com.bjpowernode.java_learning; import java.util.Date; import java.text.ParseException; import java.text.SimpleDateFormat; import ...
  • MySQL在SQL中,合理的別名可以讓SQL更容易以及可讀性更高。別名使用as來表示,可以分為表別名和列別名,別名應該是先定義後使用才對,所以首先要瞭解sql的執行順序(1) from(2) on(3) join(4) where(5) group by(開始可以使用select的別名,後面的也行) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...