欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

模糊查詢

Spring Data Jpa的使用可以減少開(kāi)發(fā)者對(duì)sql語(yǔ)句的編寫(xiě),甚至完全不需要編寫(xiě)sql語(yǔ)句。但是,開(kāi)發(fā)過(guò)程中總會(huì)遇到各種復(fù)雜的場(chǎng)景以及大大小小的坑。

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

Spring Data Jpa 模糊查詢正確用法

首先,我們先創(chuàng)建一個(gè)實(shí)體用來(lái)存儲(chǔ)我們的數(shù)據(jù)

/**
 * 實(shí)體
 *
 * @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)建我們實(shí)體對(duì)應(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);  
  /**
   * 模糊查詢錯(cuò)誤用法
   * 其中username不支持模糊查詢,deviceNames支持模糊查詢
   *
   * @param deviceNames 模糊查詢deviceNames
   * @param username 用戶名稱
   * @return {@link List<ExampleEntity>}
   */
  List<ExampleEntity> findAllByDeviceNamesLikeAndUsername(String deviceNames,String username); 
}

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

總結(jié)

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    SpringBoot中@Conditional注解的使用

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

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

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

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

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

最新評(píng)論