本篇文章介绍里另一种自定义接收jpa查询结果的方式--springdata投影(projection),这种方式就很灵活了,实现起来简单优雅,具体实现方式如下:
- pojo
public interface SummaryListDTO {
String getCityCode();
String getCityName();
String getCreateDate();
String getSaleType();
}
这是一个接口。
- 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();
- test
@Test
public void test() {
List<SummaryListDTO> list = projectSaleRpt.findHousingList();
System.out.println(JsonUtils.object2Json(list));
}
- 结果
[
{
"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":"合肥"
}
]
更多可参考官方文档: