默认情况下,参数是通过顺序绑定在查询语句上的,这使得查询方法对参数位置的重构容易出错。为了解决这个问题,可以使用 @ Param 注解指定方法参数的具体名称,通过绑定的参数名字做查询条件,这样不需要关心参数的顺序,推荐这种做法,比较利于代码重构。

案例 4.9:根据参数进行查询。

public interface UserRepository extends JpaRepository<User, Long> {@Query("select u from User u where u.firstname = :firstname or u.lastname = :lastname")User findByLastnameOrFirstname(@Param("lastname") String lastname,@Param("firstname") String firstname);
}

案例 4.10:根据参数进行查询,top 10 前面说的 query method 关键字照样有用,如下:

public interface UserRepository extends JpaRepository<User, Long> {@Query("select u from User u where u.firstname = :firstname or u.lastname = :lastname")User findTop10ByLastnameOrFirstname(@Param("lastname") String lastname,@Param("firstname") String firstname);
}

提醒:大家通过 @Query 定义自己的查询方法时,建议也用 Spring Data JPA 的 name query 的命名方法,这样下来风格就比较统一了。

Spring Data JPA 从入门到精通~@Param用法相关推荐

  1. Spring Data JPA 从入门到精通~@Version处理乐观锁的问题

    @Version 处理乐观锁的问题 @Version 乐观锁介绍 我们在研究 Auditing 的时候,发现了一个有趣的注解 @Version,源码如下: package org.springfram ...

  2. Spring Data JPA 从入门到精通~实际工作的应用场景

    在实际工作中,有哪些场景会用到自定义 Repository 呢,这里列出几种实际在工作中的应用案例. 1. 逻辑删除场景 可以用到上面说的两种实现方式,如果有框架级别的全局自定义 Respositor ...

  3. Spring Data JPA 从入门到精通~自定义实现Repository

    EntityManager 的获取方式 我们既然要自定义,首先讲一下 EntityManager 的两种获取方式. 1. 通过 @PersistenceContext 注解. 通过将 @Persist ...

  4. Spring Data JPA 从入门到精通~EntityManager介绍

    EntityManager 介绍 我们前面已经无数次提到了,JPA 的默认 Repository 的实现类是 SimpleJpaRepository,而里面的具体实现就是调用的 EntityManag ...

  5. spring data jpa从入门到精通_Spring Data JPA的简单入门

    前言 spring data JPA是spring团队打造的sping生态全家桶的一部分,本身内核使用的是hibernate核心源码,用来作为了解java持久层框架基本构成的样本是再好不过的选择.最近 ...

  6. Spring Data JPA 从入门到精通~Naming命名策略详解及其实践

    Naming 命名策略详解及其实践 用 JPA 离不开 @Entity 实体,我都知道实体里面有字段映射,而字段映射的方法有两种: 显式命名:在映射配置时,设置的数据库表名.列名等,就是进行显式命名, ...

  7. Spring Data JPA 从入门到精通~默认数据源的讲解

    默认数据源 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://1 ...

  8. Spring Data JPA 从入门到精通~Auditing及其事件详解

    Auditing 及其事件详解 Auditing 翻译过来是审计和审核,Spring 的优秀之处在于帮我们想到了很多繁琐事情的解决方案,我们在实际的业务系统中,针对一张表的操作大部分是需要记录谁什么时 ...

  9. Spring Data JPA 从入门到精通~JpaSpecificationExecutor示例

    新建两个实体 @Entity(name = "UserInfoEntity") @Table(name = "user_info", schema = &quo ...

最新文章

  1. 10-18 JS基础复习笔记
  2. rpc.ratatd安装过程中遇到的问题
  3. C#之windows桌面软件第九课:汉字串口助手
  4. 什么端口可以抓LINUX,linux下抓包工具
  5. AS3中 is,as,typeof的区别 .
  6. android8camera,[Android8.0/9.0/10]Camera:外接 USB 摄像头
  7. docker容器配置加速器
  8. 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
  9. spring+hibernate:在applicationCOntext.XML中配置C3P0参数说明
  10. PHP爬虫常用技术:v8js(执行js代码)
  11. html流控破解脚本,tc 流控脚本
  12. 6.Striped64源码解析
  13. CCF201609-3 炉石传说 (100分)
  14. 为什么反向传播更加高效
  15. 5.参数估计——点估计与区间估计概念,置信区间的公式求法与Python实现求出结果
  16. 万元内买断管理软件“全家桶”还“包定制”:SaaS新风向?
  17. 从零开始实现C++ TinyWebServer(六)---- 这或许是你见过的最容易理解的HTTP连接
  18. C ++ 编程思想(卷二) 笔记
  19. 图像预处理 | 【附高清经典图像处理书籍下载】
  20. 转自 BotVS 量化平台社区 --- 如何从绩效报告中分辨出“好模型 or 坏模型”

热门文章

  1. 论文浅尝 - ICML2020 | 跨域对齐的图最优运输算法
  2. 剑指offer-python解答
  3. DGL_图的创建、保存、加载
  4. java和python对比----1:
  5. 基于jQuery/zepto的单页应用(SPA)搭建方案
  6. ASP.NET MVC中在 @RenderBody() 或者 @Html.Partial()中需要使用引入外部js,css
  7. Android junit单元测试
  8. python 加密方法总结
  9. 在落雨的鼓浪屿打着伞到处走走找个地方坐坐
  10. 微信接口开发-初级体验