1. 程式人生 > >譯:Spring Data Repository 不區分大小寫查詢

譯:Spring Data Repository 不區分大小寫查詢

使用Spring Data Repository 不區分大小寫查詢

原文連結:https://www.baeldung.com/spring-data-case-insensitive-queries

作者:Shubhra Srivastava

譯者:liululee

1. 概覽

Spring Data JPA查詢預設是大小寫敏感的,換句話說,欄位值的比較是區分大小寫的。 本教程中,我們將探討如何在Spring Data JPA repository快速新建不區分大小寫的查詢.

2. 依賴

首先,確保pom.xml包含Spring DataH2依賴。


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>2.1.3.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
    <version>1.4.199</version>
</dependency>

最新版本請移步Maven Central

3. 初始設定

假設我們有一個具有id,firstName,lastName屬性,名為Passenger的實體類。


@Entity
class Passenger {
  
    @Id
    @GeneratedValue
    @Column(nullable = false)
    private Long id;
  
    @Basic(optional = false)
    @Column(nullable = false)
    private String firstName;
  
    @Basic(optional = false)
    @Column(nullable = false)
    private String lastName;
  
    // constructor, static factory, getters, setters
}

另外,用測試類往資料庫填充一些Passenger的樣例資料:


@DataJpaTest
@RunWith(SpringRunner.class)
public class PassengerRepositoryIntegrationTest {
 
    @PersistenceContext
    private EntityManager entityManager;
    @Autowired
    private PassengerRepository repository;
 
    @Before
    public void before() {
        entityManager.persist(Passenger.from("Jill", "Smith"));
        entityManager.persist(Passenger.from("Eve", "Jackson"));
        entityManager.persist(Passenger.from("Fred", "Bloggs"));
        entityManager.persist(Passenger.from("Ricki", "Bobbie"));
        entityManager.persist(Passenger.from("Siya", "Kolisi"));
    }
     
    //...
}

4. 忽略大小寫查詢

現在假設我們想要執行一個不區分大小寫的搜尋,以查詢所有具有給定名字(firstName)passenger。 為此,定義我們的PassengerRepository


@Repository
public interface PassengerRepository extends JpaRepository<Passenger, Long> {
    List<Passenger> findByFirstNameIgnoreCase(String firstName);
}

這裡,IgnoreCase關鍵字保證查詢不區分大小寫。 我們也可以使用JUnit測試一下:


@Test
public void givenPassengers_whenMatchingIgnoreCase_thenExpectedReturned() {
    Passenger jill = Passenger.from("Jill", "Smith");
    Passenger eve = Passenger.from("Eve", "Jackson");
    Passenger fred = Passenger.from("Fred", "Bloggs");
    Passenger siya = Passenger.from("Siya", "Kolisi");
    Passenger ricki = Passenger.from("Ricki", "Bobbie");
 
    List<Passenger> passengers = repository.findByFirstNameIgnoreCase("FrED");
 
    assertThat(passengers, contains(fred));
    assertThat(passengers, not(contains(eve)));
    assertThat(passengers, not(contains(siya)));
    assertThat(passengers, not(contains(jill)));
    assertThat(passengers, not(contains(ricki)));
}

儘管傳遞了FrED作為引數,但是返回的passenger列表中包含了一個Fred。顯然,在IgnoreCase關鍵字的幫助下,我們實現了不分大小寫的查詢。

5. 總結

在本快速教程中,我們學習瞭如何在Spring Data Repository中建立不區分大小寫的查詢。

最後,程式碼示例可以Github上找到。

文章來自公眾號:鍋外的大佬

專注分享國外最新技術內容, 幫助每位開發者更優秀地成長

相關推薦

Spring Data Repository 區分大小寫查詢

使用Spring Data Repository 不區分大小寫查詢 原文連結:https://www.baeldung.com/s

知識點MySQL表名區分大小寫的設置方法

ini 因此 過去 大寫字母 windows 一行 CA service div 在用centox安裝mysql後,把項目的數據庫移植了過去,發現一些表的數據查不到,排查了一下問題,最後發現是表名的大小寫不一致造成的。 mysql在windows系統下安裝好後,默認是對表名

模糊查詢Spring Data JPA 如何進行模糊查詢(LIKE) ?

定義 repos ppi -- data art dao層 sql語句 pos 原文詳見-----> https://blog.csdn.net/czx1204/article/details/79131281 一. 方法一 1. Controller層: 方

mogodb區分大小寫查詢

菜鳥教程-mogodb學習 一、不區分大小寫的正則表示式 如果檢索需要不區分大小寫,我們可以設定 $options 為 $i。 以下命令將查詢不區分大小寫的字串 runoob: >db.posts.find({post_text:{$regex:"runoob",$opti

grep區分大小寫查詢字串方法

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/yanlaifan/article/details/52766109 grep不區分大小寫查詢字串方法     grep用來過濾字串資訊,grep預設對字母大小寫敏感,不過可以通過

oracle資料庫區分大小寫查詢

為了在查詢時,使查詢結果不區分大小寫,一般將搜尋條件以及查詢結果集同時轉為大寫,或者小寫,然後進行查詢:如下:在下表中,查詢欄位(TRIM_COl)中包含aaa(不區分大小寫)的結果集,sql如下:查詢結果:同時轉為小寫的sql如下:

solr4.10區分大小寫查詢

 solr查詢string型別時,有時需要使之不區分大小寫( case insensitive),這時,就需要重新定義資料型別: 如統一轉化為小寫進行查詢: 1 2 3 4 5 6 7 8 <fieldType name="string

條款2~3GotW#29 區分大小寫的string

編寫一個與標準的std::string類完全相同ci_string類,但是它與通常提供的擴充套件函式stricmp一樣是不區分大小寫的。ci_string應用能夠如下使用: ci_string s("AbCde"); //不區分大小 assert(s == "abcde"); assert(s

題目標題 計算兩個字串的最大公共字串的長度,字元區分大小寫

private static int getMaxSame(String first0,String second0) { String first = first0.toLowerCase(); String second = second0.toLower

mysql 區分大小寫

小寫 ron mysql mes dir mysqld bsp strong val show variables like ‘%case%‘ +------------------------+-------+| Variable_name | Valu

python中如何區分大小寫的判斷一個元素是否在一個列表中

拒絕 結果 大小寫 over 用戶 ima image -1 技術分享 python中判斷某一個元素是否在一個列表中,可以使用關鍵字in 和 not in. 示例如下: 如果需要輸出相應的信息,可以搭配使用if語句,這裏不贅述。 ---------------------

【MySQL】如何解決MySQL中查詢區分大小寫的問題

bsp title 標識 article ble 問題 col bold table mysql查詢默認是不區分大小寫的 如: select * from some_table where str=‘abc‘; select * from some_ta

新華三字符串大小寫去重

i++ 一個 小寫 println nbsp spa div port str 題目: 字符串去重,只有大小寫的英文字母,英文字母去重時不分大小寫,且第一個出現的為大寫就輸出大寫,第一個出現的為小寫就輸出小寫 Java:字符串不分大小寫去重 1 im

MySQL表名區分大小寫的設置方法

方法 root 錯誤 table 缺省 小寫 mysq win 莫名其妙 MySQL默認是區分表名大小寫的,通過如下設置,可以讓MySQL不區分表名大小寫:1、用root登錄,修改 /etc/my.cnf;2、在[mysqld]節點下,加入一行: lower_case_ta

轉!!mysql 查詢條件區分大小寫問題

har bin class 區分大小寫 發現 IT server2 nbsp 情況 做用戶登錄模塊時,輸入用戶名(大/小寫)和密碼 ,mysql都能查出來。-- mysql查詢不區分大小寫。 轉自 http://blog.csdn.net/qishuo_java/art

將一個對象相同的屬性(區分大小寫)賦值給一個新對象

spa name OS null tty return 賦值 AR val 1 public static T Mapper<S, T>(S source) 2 { 3 T t = Activator.Create

11g創建表空間和用戶(區分大小寫)與導入導出命令

RR cmd IT word bho contents ide 刪除 創建用戶 --用戶名不區分大小寫--刪除用戶表空間drop user &用戶名 cascade;drop tablespace &永久表空間名稱 including contents a

Mysql區分大小寫問題--舊庫的表大寫問題

1.mysql修改為不區分大小寫 vim /etc/my.cnf [mysqld] #設定為1表示不區分大小寫 lower_case_table_names=1 重啟mysql服務 service mysql restart 檢視是否修改成功 mysql> s

Python解決列表字元區分大小寫問題

有時候,我們需要檢測一個元素是否已經存在列表中,並且不區分大小寫,如:列表已有元素Mary,那我們想認為MARY也已經被佔用。這個例子在實際程式設計中會用到很多,比如保證網站註冊使用者獨一無二、郵件姓名獨一無二等等。 下邊列子將實現使得列表元素獨一無二功能: 建立一個列表有若干個元素,