jpa查询的返回结果
时间: 2024-02-16 15:57:37 浏览: 81
Java数据库查询结果的输出
4星 · 用户满意度95%
JPA查询的返回结果可以分为三种类型:实体对象、标量值和构造函数表达式。其中实体对象是指查询结果映射到实体类对象中,标量值是指查询结果映射到基本数据类型或包装类中,构造函数表达式是指查询结果映射到自定义的DTO或VO对象中。
1. 返回实体对象
```java
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
// 省略getter和setter
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByName(String name);
}
```
在上述代码中,我们定义了一个实体类User,并通过JpaRepository定义了一个查询方法findByName,该方法返回一个User对象。
2. 返回标量值
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u.name FROM User u WHERE u.age > :age")
List<String> findUserNameByAge(@Param("age") Integer age);
}
```
在上述代码中,我们通过@Query注解自定义了一个查询方法findUserNameByAge,该方法返回一个String类型的List,其中存储了查询结果中所有满足条件的用户姓名。
3. 返回构造函数表达式
```java
public class UserDTO {
private String name;
private Integer age;
public UserDTO(String name, Integer age) {
this.name = name;
this.age = age;
}
// 省略getter和setter
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT new com.example.demo.dto.UserDTO(u.name, u.age) FROM User u WHERE u.age > :age")
List<UserDTO> findUserDTOByAge(@Param("age") Integer age);
}
```
在上述代码中,我们定义了一个DTO类UserDTO,并通过@Query注解自定义了一个查询方法findUserDTOByAge,该方法返回一个UserDTO类型的List,其中存储了查询结果中所有满足条件的用户姓名和年龄。
阅读全文