springDataJpa 类投影
时间: 2023-12-29 13:06:20 浏览: 60
spring-data-jpa
除了接口投影,Spring Data JPA 还提供了类投影的方式来自定义查询结果。类投影与接口投影类似,不同之处在于类投影是使用类来定义查询结果,而不是使用接口。
下面是一个简单的例子,演示如何使用类投影来自定义查询结果:
定义一个类投影:
```java
public class UserProjection {
private String username;
private String email;
public UserProjection(String username, String email) {
this.username = username;
this.email = email;
}
public String getUsername() {
return username;
}
public String getEmail() {
return email;
}
}
```
在 UserRepository 中使用类投影:
```java
public interface UserRepository extends JpaRepository<User, Long> {
List<UserProjection> findByUsername(String username);
}
```
通过上面的代码,我们可以在 UserRepository 中定义一个方法 findByUsername,该方法会返回一个 List<UserProjection> 类型的结果集,该结果集中只包含 username 和 email 两个字段。
当我们调用 findByUsername 方法时,Spring Data JPA 将根据方法名自动生成查询语句,并根据 UserProjection 类中定义的属性生成查询结果。
需要注意的是,使用类投影时,类必须要有一个构造方法,用来初始化查询结果中的属性。同时,该构造方法的参数列表必须与查询结果中的字段相对应,且参数列表中的参数类型必须与查询结果中的字段类型相对应。
阅读全文