原文連接:https://www.baeldung.com/spring-data-case-insensitive-queriesjava
做者:Shubhra Srivastavagit
譯者:liululeegithub
Spring Data JPA
查詢默認是大小寫敏感的,換句話說,字段值的比較是區分大小寫的。 本教程中,咱們將探討如何在Spring Data JPA repository
快速新建不區分大小寫的查詢.spring
首先,確保pom.xml
包含Spring Data
和H2
依賴。數據庫
<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。maven
假設咱們有一個具備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")); } //... }
如今假設咱們想要執行一個不區分大小寫的搜索,以查找全部具備給定名字(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
關鍵字的幫助下,咱們實現了不分大小寫的查詢。
在本快速教程中,咱們學習瞭如何在Spring Data Repository
中建立不區分大小寫的查詢。
最後,代碼示例能夠Github上找到。
文章來自公衆號:鍋外的大佬
專一分享國外最新技術內容, 幫助每位開發者更優秀地成長