七叶笔记 » java编程 » spring data jpa查询一个实体类的部分属性方式

spring data jpa查询一个实体类的部分属性方式

spring data jpa查询一个实体类的部分属性

使用Spring Data Repository查询时候,通常情况下返回的是一个实体所有的属性。但是在很多情况下,我们只需要实体类的部分属性。下面的部分讲述如何实现查询一个实体类的部分属性。

首先我们定义两个实体类

然后创建person实体类的repository

"1"方法将会返回Person对象的所有属性(包括address)

 

但实际情况我们不需要返回address对象,这种情况我们可以定义一个projection,如下:

“2”输出person对象的firstName属性,“3”输出person对象的lastName属性

最后在Person实体类的repository中定义一个查询方法,返回值是NoAddress,如下

返回结果只包含firstName和lastName两个属性

 

spring data jpa查询部分字段、多余附加字段

spring data jpa查询部分字段

第一种方法:使用 model 查询时转化

首先建立一个 model ,写上自己想要查询的字段,然后写上构造函数,这步很重要,因为spring jpa 转化时会调用这个构造方法

然后在 dao 类中写查询方法

直接在查询语句中 new model 框架底层会调用它,然后返回这个对象(这里我写了完整的类路径,不写的时候它报错说找不到类型什么的)

然后就可以获得只有指定字段的 model 了。然后就把它转成 JSON 格式就 O 了。

第二种方法:在service 里边转换成 JSON

原理其实和第一种方法差不多,只是处理结果的方式不太一样,只是这种方法我们就不在 hql 中 new Model 了,直接写查询方法

直接new map(这里得是小写,不知道大写有木有问题,反正没试,编译器提示是要小写的) 

然后返回的结果是这样的

[    {        "0": "admin",         "1": "你猜",         "2": "男",         "3": "一段描述"    }, {        "0": "abc",         "1": "你猜人家",         "2": "女",         "3": "没事先挂了"    }]

注:多表联合查询附加额外字段,亦可使用此方法。例如

第三种方法:select语句部分字段使用默认值

相关文章