原文连接: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上找到。
文章来自公众号:锅外的大佬
专一分享国外最新技术内容, 帮助每位开发者更优秀地成长