JPA自定义对象接收查询结果集2

210 阅读1分钟

本篇文章介绍里另一种自定义接收jpa查询结果的方式--springdata投影(projection),这种方式就很灵活了,实现起来简单优雅,具体实现方式如下:

  1. pojo
public interface SummaryListDTO {

    String getCityCode();

    String getCityName();

    String getCreateDate();

    String getSaleType();

}

这是一个接口。

  1. dao
@Query(value = "select t2.city_cd cityCode,t2.city_name cityName,DATE_FORMAT(t1.create_time,'%Y-%m-%d') createDate,t1.sale_type saleType from tb_project_sale t2 " +
        "left join tb_project_sale_core t1 on t2.id = t1.id " +
        "where t1.sale_type is not null " +
        "and (t1.create_time >= '2021-04-01' and t1.create_time <= '2021-06-01') ", nativeQuery = true)
List<SummaryListDTO> findHousingList();
  1. test
@Test
public void test() {
    List<SummaryListDTO> list =  projectSaleRpt.findHousingList();
    System.out.println(JsonUtils.object2Json(list));
}
  1. 结果
[
{
"saleType":"2",
"cityCode":null,
"createDate":"2021-04-14",
"cityName":null
    },
{
"saleType":"2",
"cityCode":null,
"createDate":"2021-04-14",
"cityName":null
    },
{
"saleType":"2",
"cityCode":null,
"createDate":"2021-04-14",
"cityName":null
    },
{
"saleType":"2",
"cityCode":null,
"createDate":"2021-04-14",
"cityName":null
    },
{
"saleType":"2",
"cityCode":null,
"createDate":"2021-04-14",
"cityName":null
    },
{
"saleType":"2",
"cityCode":null,
"createDate":"2021-04-14",
"cityName":null
    },
{
"saleType":"2",
"cityCode":null,
"createDate":"2021-04-19",
"cityName":null
    },
{
"saleType":"2",
"cityCode":"3401",
"createDate":"2021-04-23",
"cityName":"合肥"
    },
{
"saleType":"2",
"cityCode":"3401",
"createDate":"2021-04-29",
"cityName":"合肥"
    }
]

更多可参考官方文档:

docs.spring.io/spring-data…