【Spring Boot】第7.3課-在 MongoRepository 定義查詢條件與排序方式 #2024 年更新


https://unsplash.com/photos/LmyPLbbUWhA

上一篇已經介紹過 MongoRepository 內建的查詢方法,也就是指定 id 欄位。但資料勢必有其他欄位,只查 id 肯定是不夠的。

本文會使用 Spring Data 框架的功能,示範如何在 repository 中設計自己的查詢條件,包含透過方法名稱及原生語法。接著說明如何進行排序與分頁。

最後簡介 MongoTemplate,藉由動態產生查詢條件,以因應多樣的需求。


本文已經搬家,歡迎到「【Spring Boot】第8.3課-在 MongoRepository 定義查詢條件與排序方式」繼續閱讀。

留言

  1. 在後面課程使用MongoRepository時, getProducts時沒輸入priceTo的話會自動為0而不是null, 弄得沒法默認為Integer.MAX_VALUE, 該怎麼辦? 是ProductQueryParameter設默認值嗎...

    回覆刪除
    回覆
    1. 嗨,請問是後面的哪個課程呢?我使用第23課的程式做測試後,沒有發現你說的問題。在範例程式中,ProductQueryParameter的priceTo的型態是大寫的「Integer」。所以沒有給值時會是null,不是0。

      刪除
    2. 哦哦, 謝謝提醒, 沒發現自己打了int

      刪除
  2. 當我Post http://localhost:8080/products的時候,Postman出現403.
    後來上網找答案,發現要在class SecurityConfig 裡面,加上
    .antMatchers(HttpMethod.POST, "/products").permitAll()
    這一行,就不會出現403了.

    回覆刪除
    回覆
    1. 這篇文章的完成後專案,沒有加入 Spring Security,照理來說不會有這個問題,反而是在第17課完成才會出現。
      屆時請參考第18課的文章,在 request header 攜帶 access token,就不會出現 403,也不必加上 permitAll 了~

      刪除
  3. 作者已經移除這則留言。

    回覆刪除
  4. 您好 好像沒看到第八課的部分~

    回覆刪除
    回覆
    1. 嗨嗨,原本第 7、8 課都是 MongoDB,但今年做了一些更新,整合成第 7.1 ~ 7.3 課系列。目前第 8 課是「空號」,正在寫 MySQL 的文章 :)

      刪除
    2. 了解~~ 您寫得很好 目前正在學習spring boot相關知識 若有問題再請教您 謝謝~

      刪除

張貼留言