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 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 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 不区分大小写查询相关推荐

  1. Spring Data Solr教程:查询方法

    我们已经了解了如何配置Spring Data Solr. 我们还学习了如何向Solr索引添加新文档,如何更新现有文档的信息以及从Solr索引删除文档. 现在是时候继续前进,学习如何使用Spring D ...

  2. Spring Data(二)查询

    Spring Data(二)查询 接着上一篇,我们继续讲解Spring Data查询的策略. 查询的生成 查询的构建机制对于Spring Data的基础是非常有用的.构建的机制将截断前缀find-By ...

  3. 将原生SQL功能Hibernate到您的Spring Data Repository中

    JPA为您提供@NamedNativeQuery以便使用本机SQL. 但是,用法并不方便,特别是当您需要在本机SQL中映射多个实体时. 您必须定义一组SqlResultSetMapping映射,这很容 ...

  4. 将原生SQL功能休眠到您的Spring Data Repository中

    JPA为您提供@NamedNativeQuery以便使用本机SQL. 但是,用法不是很方便,尤其是当您需要在本机SQL中映射多个实体时. 您必须定义一组容易出错的SqlResultSetMapping ...

  5. 【Spring Data ElasticSearch】高级查询,聚合

    [Spring Data ElasticSearch]高级查询,聚合 1. 高级查询 1.1 基本查询 1.2 自定义查询 1.3 分页查询 1.4 排序 2. 聚合 2.1 聚合为桶 2.2 嵌套聚 ...

  6. Spring Data JPA--多表关联查询--实例

    原文网址:Spring Data JPA--多表关联查询--实例_IT利刃出鞘的博客-CSDN博客 简介 多表联查有以下方案 原生SQL JHQL Specification 实体关联(不推荐) 见: ...

  7. spring data jpa实现分页查询功能

    spring data jpa实现分页查询功能 HTML代码部分: // 收派标准信息表格 $('#grid').datagrid( {iconCls : 'icon-forward',fit : t ...

  8. spring data jpa 多对多查询

    spring data jpa 多对多查询 以用户-角色 多读多为例: User类,用户 @Entity public class User {private String username;priv ...

  9. Spring Data MongoRepository 的 in 查询操作

    Spring Data MongoRepository 如何像 MySql 那样进行 in 查询操作? 可以参考: @Repository public interface QuestionRepos ...

最新文章

  1. C++网络编程(一)
  2. python伪装浏览器什么意思_用python2和python3伪装浏览器爬取网页
  3. 进程环境之环境表【转】
  4. oracle 取英文排序,Oracle中中文、数字,英文混杂形式的字段进行排序的方法
  5. 【Flink】Flink 如何在本地IDEA恢复检查点 不通过IDEA 不通过 flink run 方法
  6. 关于云主机拷贝复制资源异常的处理办法
  7. NVIDIA驱动安装(arm64平台可用)
  8. c 语言中析构函数,全面解析C++中的析构函数
  9. 合肥有哪些不错的 IT 公司?
  10. 7天内完成基础USB开发(2)——Pionway SDK简介
  11. 获取加速传感器的值 APK
  12. 2018北航北理工保研推免经验分享---本科211图形图像方向
  13. win10 计划任务时提示所指定的账户名称无效解决方法
  14. Java文件压缩工具类ZipUtils学习笔记
  15. 出价成本计算机软件,关键词移动如何出价_移动出价比例设置的注意事项
  16. 数据库连接报错:connection is being used
  17. 安全基础知识及云盾概览
  18. 毕业设计 Spring Boot个人健康信息管理系统(含源码+论文)
  19. 微信小程序textArea输入框随着输入字数自适应高度
  20. Echart 图表模板变量 {a}, {b},{c},{d},{e}

热门文章

  1. VMWare中CentOS系统不能上网的解决
  2. Win32 API 浏览目录对话框示例
  3. mysql插入大量数据总结
  4. win32 DLL 学习总结
  5. 调试一个C#研究生管理信息系统源码
  6. 2018寒假作业学习总结
  7. WPF 自定义控件的坑(蠢的:自定义控件内容不显示)
  8. IDEA Spring框架入门实例
  9. 《如何阅读一本书》之 阅读的层次
  10. IFE春季班第一阶段任务(请仔细阅读)