亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Spring Data Jpa 模糊查詢的正確用法

 更新時間:2018年05月03日 13:42:21   作者:那年初二  
本篇文章主要介紹了詳解Spring Data Jpa 模糊查詢的正確用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

模糊查詢

Spring Data Jpa的使用可以減少開發(fā)者對sql語句的編寫,甚至完全不需要編寫sql語句。但是,開發(fā)過程中總會遇到各種復(fù)雜的場景以及大大小小的坑。

今天項目中某個功能模塊需要用到模糊查詢。原生sql中模糊查詢關(guān)鍵字‘Like',而Spring Data Jpa的Repository接口中恰恰也有實體字段對應(yīng)的Like。但是,如果直接使用它,那么恭喜你,你幸運地掉坑了。

Spring Data Jpa 模糊查詢正確用法

首先,我們先創(chuàng)建一個實體用來存儲我們的數(shù)據(jù)

/**
 * 實體
 *
 * @author chentai
 * @date 18/04/22
 */
@Data
@Entity
@EqualsAndHashCode(callSuper = true)
public class ExampleEntity{
  @Id
  @GeneratedValue(generator = "uuid")
  @GenericGenerator(name = "uuid", strategy = "uuid")
  private String Id ;
  private String username;
  private String deviceNames;
}

接著,創(chuàng)建我們實體對應(yīng)的Repository接口

/**
 * @author chentai
 * @date 18/04/22
 */
@Repository
public interface ExampleRepository extends CrudRepository<ExampleEntity, String> {

  /**
   * 模糊查詢正確用法
   * 其中username不支持模糊查詢,deviceNames支持模糊查詢
   *
   * @param deviceNames 模糊查詢deviceNames
   * @param username 用戶名稱
   * @return {@link List<ExampleEntity>}
   */
  List<ExampleEntity> findAllByDeviceNamesContainingAndUsername(String deviceNames,String username);  
  /**
   * 模糊查詢錯誤用法
   * 其中username不支持模糊查詢,deviceNames支持模糊查詢
   *
   * @param deviceNames 模糊查詢deviceNames
   * @param username 用戶名稱
   * @return {@link List<ExampleEntity>}
   */
  List<ExampleEntity> findAllByDeviceNamesLikeAndUsername(String deviceNames,String username); 
}

最后,在測試類中測試ExampleRepository中的兩個方法,(測試結(jié)果暫不展示)發(fā)現(xiàn)findAllByDeviceNamesLikeAndUsername方法并沒有正確查詢到我們想要的結(jié)果,得到的結(jié)果是精確查詢的結(jié)果。而findAllByDeviceNamesContainingAndUsername得到了我們想要的模糊查詢的結(jié)果。

總結(jié)

如果想要在項目中不編寫sql原生語句的情況下使用模糊查詢,請使用Containing關(guān)鍵字,而非想當然的認為原生使用Like關(guān)鍵字,JPA中也是使用Like關(guān)鍵字。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot如何優(yōu)雅的處理校驗參數(shù)的方法

    SpringBoot如何優(yōu)雅的處理校驗參數(shù)的方法

    這篇文章主要介紹了SpringBoot如何優(yōu)雅的處理校驗參數(shù)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • SpringBoot @Import與@Conditional注解使用詳解

    SpringBoot @Import與@Conditional注解使用詳解

    在了解spring boot自動配置原理前,再來了解下兩個注解@Import注解和@Conditional注解,@Conditional是Spring4新提供的注解,它的作用是按照一定的條件進行判斷,滿足條件給容器注冊bean
    2022-10-10
  • Java?MethodHandles介紹與反射對比區(qū)別詳解

    Java?MethodHandles介紹與反射對比區(qū)別詳解

    這篇文章主要為大家介紹了Java?MethodHandles介紹與反射對比區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • springboot配置多數(shù)據(jù)源(靜態(tài)和動態(tài)數(shù)據(jù)源)

    springboot配置多數(shù)據(jù)源(靜態(tài)和動態(tài)數(shù)據(jù)源)

    在開發(fā)過程中,很多時候都會有垮數(shù)據(jù)庫操作數(shù)據(jù)的情況,需要同時配置多套數(shù)據(jù)源,本文主要介紹了springboot配置多數(shù)據(jù)源(靜態(tài)和動態(tài)數(shù)據(jù)源),感興趣的可以了解一下
    2023-09-09
  • Java服務(wù)假死之生產(chǎn)事故的排查與優(yōu)化問題

    Java服務(wù)假死之生產(chǎn)事故的排查與優(yōu)化問題

    在服務(wù)器上通過curl命令調(diào)用一個Java服務(wù)的查詢接口,半天沒有任何響應(yīng),怎么進行這一現(xiàn)象排查呢,下面小編給大家記一次生產(chǎn)事故的排查與優(yōu)化——Java服務(wù)假死問題,感興趣的朋友一起看看吧
    2022-07-07
  • 詳解在Java中如何創(chuàng)建多線程程序

    詳解在Java中如何創(chuàng)建多線程程序

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著在Java中如何創(chuàng)建多線程程序展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • idea顯示springboot多服務(wù)啟動界面service操作

    idea顯示springboot多服務(wù)啟動界面service操作

    這篇文章主要介紹了idea顯示springboot多服務(wù)啟動界面service操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot中@Conditional注解的使用

    SpringBoot中@Conditional注解的使用

    這篇文章主要介紹了SpringBoot中@Conditional注解的使用,@Conditional注解是一個條件裝配注解,主要用于限制@Bean注解在什么時候才生效,以指定的條件形式控制bean的創(chuàng)建,需要的朋友可以參考下
    2024-01-01
  • Spring基于AspectJ的AOP開發(fā)案例解析

    Spring基于AspectJ的AOP開發(fā)案例解析

    這篇文章主要介紹了Spring的基于AspectJ的AOP開發(fā),AspectJ是一個基于Java語言的AOP框架,使用AspectJ需要導入Spring?AOP和AspectJ相關(guān)jar包,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • JAVA不可變類(immutable)機制與String的不可變性(推薦)

    JAVA不可變類(immutable)機制與String的不可變性(推薦)

    這篇文章主要介紹了JAVA不可變類(immutable)機制與String的不可變性(推薦)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08

最新評論