原文地址:https://blog.csdn.net/weixin_40326509/article/details/80865646

在使用springboot中,需要使用JPQL和SQL去查询记录。

获取一整条记录,返回的类型就是对应的实体类或者实体类的集合。

当不是全部字段时,返回类型就不能是实体类了。

以下是用JPQL和SQL获取单个字段或多个字段的返回类型:

JPA查询单个字段:

@Query(value="select age from User u where u.name=?1")

T find(String userName);

当只有一条记录时,T可以是查询字段对应的类型,这里是String;也可以是Object;同时也可以用List表示,这里是List<String>或者List<Object>。

Notes:如果T是Object[],但是在提取元素使用的时候,不能是

String age=(String)find(String userName),运行时报object类型不能转换成XXX类型,可能需要instanceof 判断一下吧。

直接打印 System.out.println(find(String userName)[0]),会是一个object对象,并不是age的值。

当有多条记录时,T用List表示,这里是List<String>或者List<Object>。或者是List<Object[]>。

JPA查询对个字段:

@Query(value="select age,sex from User u where u.name=?1")

T find(String userName);

无论返回的是单条记录还是多条记录,T 都只能是List<Object[]>。

Notes:返回多个字段并且是单条记录的时候,T很自然的就会用Object[],这时候这个数组的长度永远只会是1,并且还会有类型转换问题,这是个坑。

总结:

单个字段单条记录时,返回类型最好用对应字段的类型或者Object。

单个子弹多条记录时,返回类型最好用List<Object>或者List<字段对应类型>。

多个字段时,不论是多条记录还是单条记录,返回类型都应该是List<Object[]>

---

JPA查询单个字段和多个字段返回类型总结的更多相关文章

  1. [转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题

    原文地址:http://www.ablanxue.com/prone_3552_1.html 1. 查询整个映射对象所有字段 Java代码 //直接from查询出来的是一个映射对象,即:查询整个映射对 ...

  2. Java JPA 查询实体部分字段

    前言 相信大家在用Java JPA作为ORM的时候都会有这种困惑,就是某个表T我仅仅希望取到其中的A.B.C三个字段,可是jpa是通过Entity Class映射的方式组合查询结果的. 那么如何通过使 ...

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

    spring data jpa查询部分字段 第一种方法:使用 model 查询时转化 首先建立一个 model ,写上自己想要查询的字段,然后写上构造函数,这步很重要,因为spring jpa 转化时 ...

  4. Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题

    HQL 是Hibernate Query Language的简写,即 hibernate 查询语言:HQL采用面向对象的查询方式.HQL查询提供了更加丰富的和灵活的查询特性,因此Hibernate将H ...

  5. Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串

    应用场合:参考网上查询数据表的所有字段名代码,使用游标生成指定单个表的所有字段名跟逗号组成的用于select  逗号隔开的字段名列表 from字符串等场合. 查询结果输出如下: 当前数据表TB_UD_ ...

  6. mysql合并查询结果及为表和字段取别名

    利用union关键字,可以给出多条select语句,并将它们的结果组合成单个的结果. 合并是,两个表对应的列数和数据类型必须相同. 各个select语句之间使用union或union all关键字分隔 ...

  7. --查询nvarchar(max)的表和字段

    --查询nvarchar(max)的表和字段 select 'insert into #tempTabelInfo select '''+d.name+''', '''+a.name+''', max ...

  8. Linq 中查询一个表中指定的字段

    //Linq中查询一个表中指定的几个字段: ); // FindAllItems()为查询对应表的所有数据的方法: // Where 里面为查询条件 // Select 为查询的筛选条件 new{} ...

  9. QGis(三)查询矢量图层的要素属性字段值(转载)

    QGis(三)查询矢量图层的要素属性字段值 https://github.com/gwaldron/osgearth/issues/489 当加载一个矢量图层后,如果要查看要素的属性字段值,则需要实现 ...

随机推荐

  1. vue2之 missing param for named route "xxxx"

    场景: 解决方法:可以做的是将其包含router-link在适当的位置v-if,以便在您的异步数据实际到达之前不会尝试渲染. html代码: <div id="app" cl ...

  2. 记录片宇宙之the secret of the sun

  3. 《剑指offer》-逐层打印二叉树

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 乍一看就是一个BFS,但是因为太久没刷题都忘记了要使用queue来作为空间存储容器了. 先参考milolip的代码,写出这样 ...

  4. VS增加插件 Supercharger破解教程

    VS增加插件 Supercharger破解教程 Supercharger效果预览及下载路径: http://supercharger.tools/index.html 下载地址:https://vis ...

  5. CentOS6.8安装360 pika

    1.安装依赖包 yum install snappy-devel bz2 libzip-dev libsnappy-dev libprotobuf-dev libevent-dev protobuf- ...

  6. [转] React 是什么

    用脚本进行DOM操作的代价很昂贵.有个贴切的比喻,把DOM和JavaScript各自想象为一个岛屿,它们之间用收费桥梁连接,js每次访问DOM,都要途径这座桥,并交纳“过桥费”,访问DOM的次数越多, ...

  7. Linux环境下Node.js的安装配置

    1.   官网下载Node.js 2.   安装Node.js 根据下载内容的不同,提供三种安装方法,选择自己喜欢的方式 2.1.   绿色免安装版(Linux(.tar.gz)) 解压Node-XX ...

  8. day17--JQuery

        JQuery(中文社区:http://jquery.cuishifeng.cn/) 模块  类库  在不同语言叫法不一样而已 DOM/BOM/JavaScript的类库 一.查找元素 JQue ...

  9. linux下安装openoffice

    一.环境 centos6.9 安装jdk1.6及以上 二.安装依赖 yum install libXext.x86_64 -y yum install freetype -y yum groupins ...

  10. Error: The INF file contains Unicode characters that could not be converted correctly

    昨天第一次为自己的windows mobile程序制作CAB安装包,但是在生成过程中,却出现了这样一个问题: 编译完成 -- 0 个错误,0 个警告time -> G:\WindowsMobil ...