Spring Data 忽略大小写查询
点击左上角,关注:“锅外的大佬”
专注分享国外最新技术内容,帮助每一个技术人更优秀地成长
1.概览
SpringDataJPA
查询默认是大小写敏感的,换句话说,字段值的比较是区分大小写的。本教程中,我们将探讨如何在 SpringDataJPA repository
快速新建不区分大小写的查询.2.依赖
首先,确保
pom.xml
包含 SpringData
和 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。
3.初始设置
假设我们有一个具有
id
, firstName
, lastName
属性,名为 Passenger
的实体类。@Entity
classPassenger{
@Id
@GeneratedValue
@Column(nullable =false)
privateLong id;
@Basic(optional =false)
@Column(nullable =false)
privateString firstName;
@Basic(optional =false)
@Column(nullable =false)
privateString lastName;
// constructor, static factory, getters, setters
}
另外,用测试类往数据库填充一些
Passenger
的样例数据:@DataJpaTest
@RunWith(SpringRunner.class)
publicclassPassengerRepositoryIntegrationTest{
@PersistenceContext
privateEntityManager entityManager;
@Autowired
privatePassengerRepository repository;
@Before
publicvoid 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
publicinterfacePassengerRepositoryextendsJpaRepository<Passenger,Long>{
List<Passenger> findByFirstNameIgnoreCase(String firstName);
}
这里,
IgnoreCase
关键字保证查询不区分大小写。
我们也可以使用JUnit测试一下:@Test
publicvoid 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.总结
在本快速教程中,我们学习了如何在
SpringDataRepository
中创建不区分大小写的查询。最后,代码示例可以Github上找到。原文链接:https://www.baeldung.com/spring-data-case-insensitive-queries作者:Shubhra Srivastava译者:Leesen
动手扫一扫关注,帮你不断突破技术壁垒
阅读原文 最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。