【已解决】Spring data jpa的@query的传入参数是对象怎么匹配参数

我们知道,在使用JPA的时候,如果参数是一个一个的话,有两种方式匹配

①:根据位置匹配。如下:

@Query(value = "SELECT * FROM employee WHERE c_id=?1 and id=?2", nativeQuery = true)
EmployeeEntity getUnitCertificateById(String cId,String id);

其中?1和?2正好对应入参的cId和id

②:使用@Param进行显示指定。如下:

@Query(value = "SELECT * FROM employee WHERE id= :id", nativeQuery = true)
List<EmployeeEntity> getUnitCertificate(String id);

或者在 String id前面加上@Param("id")

③:如果入参是一个对象的话,那么,参数又是如何匹配的呢?

在使用@Query注解时,可以使用spel表达式来访问对象的属性。例如:

@Query("SELECT e FROM Employee e WHERE e.firstName = :#{#employee.firstName} AND e.lastName = :#{#employee.lastName}")
List<Employee> findByFirstNameAndLastName(@Param("employee") Employee employee);

这里,我们使用#{}来访问employee对象的firstName和lastName属性。注意,#{}的内容需要用双引号括起来。

在调用该方法时,可以直接传入一个Employee对象作为参数,例如:

Employee employee = new Employee();
employee.setFirstName("John");
employee.setLastName("Doe");
List<Employee> results = repository.findByFirstNameAndLastName(employee);

Spring Data JPA会自动将该对象转换为查询语句中的参数。

相关推荐

  1. Python中函数参数传递方式怎样

    2023-12-23 14:18:01       25 阅读
  2. Python中函数参数传递方式怎样

    2023-12-23 14:18:01       23 阅读
  3. axios query传数组参数格式

    2023-12-23 14:18:01       27 阅读
  4. MyBatis_传入参数问题

    2023-12-23 14:18:01       35 阅读
  5. C# 前端GET或POST传递两种参数body和query区别

    2023-12-23 14:18:01       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-23 14:18:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-23 14:18:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-23 14:18:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-23 14:18:01       18 阅读

热门阅读

  1. 8.点云获取和数据处理(python)

    2023-12-23 14:18:01       45 阅读
  2. SpringBoot整合RocketMQ

    2023-12-23 14:18:01       31 阅读
  3. react: useEffect

    2023-12-23 14:18:01       42 阅读
  4. c/c++ | 使用cmake 对项目进行构造

    2023-12-23 14:18:01       40 阅读
  5. 金融知识——OMS、EMS和PMS分别是什么意思

    2023-12-23 14:18:01       77 阅读
  6. apply&lambda函数用法

    2023-12-23 14:18:01       39 阅读
  7. 2023年终杂谈

    2023-12-23 14:18:01       43 阅读