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

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

原文連接:https://www.baeldung.com/spring-data-case-insensitive-queriesjava

做者:Shubhra Srivastavagit

譯者:liululeegithub

1. 概覽

Spring Data JPA查詢默認是大小寫敏感的,換句話說,字段值的比較是區分大小寫的。 本教程中,咱們將探討如何在Spring Data JPA repository快速新建不區分大小寫的查詢.spring

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 Centralmaven

3. 初始設置

假設咱們有一個具備id,firstName,lastName屬性,名爲Passenger的實體類。spring-boot

@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測試一下:code

@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上找到。

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

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

相關文章
相關標籤/搜索