译:Spring Data Repository 不区分大小写查询
2019独角兽企业重金招聘Python工程师标准>>>
使用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 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。
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 {@PersistenceContextprivate EntityManager entityManager;@Autowiredprivate PassengerRepository repository;@Beforepublic 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上找到。
文章来自公众号:锅外的大佬
专注分享国外最新技术内容, 帮助每位开发者更优秀地成长
转载于:https://my.oschina.net/liululee/blog/3054191
译:Spring Data Repository 不区分大小写查询相关推荐
- Spring Data Solr教程:查询方法
我们已经了解了如何配置Spring Data Solr. 我们还学习了如何向Solr索引添加新文档,如何更新现有文档的信息以及从Solr索引删除文档. 现在是时候继续前进,学习如何使用Spring D ...
- Spring Data(二)查询
Spring Data(二)查询 接着上一篇,我们继续讲解Spring Data查询的策略. 查询的生成 查询的构建机制对于Spring Data的基础是非常有用的.构建的机制将截断前缀find-By ...
- 将原生SQL功能Hibernate到您的Spring Data Repository中
JPA为您提供@NamedNativeQuery以便使用本机SQL. 但是,用法并不方便,特别是当您需要在本机SQL中映射多个实体时. 您必须定义一组SqlResultSetMapping映射,这很容 ...
- 将原生SQL功能休眠到您的Spring Data Repository中
JPA为您提供@NamedNativeQuery以便使用本机SQL. 但是,用法不是很方便,尤其是当您需要在本机SQL中映射多个实体时. 您必须定义一组容易出错的SqlResultSetMapping ...
- 【Spring Data ElasticSearch】高级查询,聚合
[Spring Data ElasticSearch]高级查询,聚合 1. 高级查询 1.1 基本查询 1.2 自定义查询 1.3 分页查询 1.4 排序 2. 聚合 2.1 聚合为桶 2.2 嵌套聚 ...
- Spring Data JPA--多表关联查询--实例
原文网址:Spring Data JPA--多表关联查询--实例_IT利刃出鞘的博客-CSDN博客 简介 多表联查有以下方案 原生SQL JHQL Specification 实体关联(不推荐) 见: ...
- spring data jpa实现分页查询功能
spring data jpa实现分页查询功能 HTML代码部分: // 收派标准信息表格 $('#grid').datagrid( {iconCls : 'icon-forward',fit : t ...
- spring data jpa 多对多查询
spring data jpa 多对多查询 以用户-角色 多读多为例: User类,用户 @Entity public class User {private String username;priv ...
- Spring Data MongoRepository 的 in 查询操作
Spring Data MongoRepository 如何像 MySql 那样进行 in 查询操作? 可以参考: @Repository public interface QuestionRepos ...
最新文章
- C++网络编程(一)
- python伪装浏览器什么意思_用python2和python3伪装浏览器爬取网页
- 进程环境之环境表【转】
- oracle 取英文排序,Oracle中中文、数字,英文混杂形式的字段进行排序的方法
- 【Flink】Flink 如何在本地IDEA恢复检查点 不通过IDEA 不通过 flink run 方法
- 关于云主机拷贝复制资源异常的处理办法
- NVIDIA驱动安装(arm64平台可用)
- c 语言中析构函数,全面解析C++中的析构函数
- 合肥有哪些不错的 IT 公司?
- 7天内完成基础USB开发(2)——Pionway SDK简介
- 获取加速传感器的值 APK
- 2018北航北理工保研推免经验分享---本科211图形图像方向
- win10 计划任务时提示所指定的账户名称无效解决方法
- Java文件压缩工具类ZipUtils学习笔记
- 出价成本计算机软件,关键词移动如何出价_移动出价比例设置的注意事项
- 数据库连接报错:connection is being used
- 安全基础知识及云盾概览
- 毕业设计 Spring Boot个人健康信息管理系统(含源码+论文)
- 微信小程序textArea输入框随着输入字数自适应高度
- Echart 图表模板变量 {a}, {b},{c},{d},{e}