Spring Boot 2.x实战63 - Spring Data 7 - Spring Data JPA查询(定制查询返回Projection:接口或对象)

本文详细介绍了Spring Data JPA中如何使用Projection和DTO进行定制查询,包括通过接口和数据传输对象(DTO)定义返回值,以及动态选择返回类型的方法。内容涵盖Repository接口的实现,代码验证示例,以及Spring Boot实战书籍推荐。
摘要由CSDN通过智能技术生成
2.6.1.8 Projection

Spring Data JPA的查询方法一般返回的是聚合根的一个多或多个实例。我们可以使用Projection,通过聚合根的属性来定制查询返回。

我们可以使用接口来定制返回值

public interface PersonProjectionInterface {
   

    String getName(); //1

    Address getAddress(); //2

    @Value("#{target.name + ' s age is' + target.age}") //3
    String getAgeDesc();

    default String getCityDesc(){
    //4
        return getName() + " lives in " + getAddress().getCity();
    }

    @Value("#{@personProjectionHelper.getInfo(target)}") //5
    String getInfo();

    @Value("#{args[0] + ' ' + target.name + ' !'}") //6
    String getHello(String greeting);
}
  1. 可以直接设置聚合根的属性在返回里;

  2. 设置聚合根的属性对象在返回里;

  3. 可以使用@Value注解计算新的值,target代表聚合根的值;

  4. 可以使用default方法来定义运算逻辑;

  5. 可调用外部Bean来运算;

    @Component
    public class PersonProjectionHelper {
         
    
        public String getInfo(Person person){
         
            return person.toString();
        }
    }
    
  6. 可获取方法参数来参与运算。

我们在Repository的返回值中使用上面的接口:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值