在使用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. Spring Boot+JPA 查询数据方式与代码演示

    在Spring Boot项目中, 使用JPA查询的常见使用场景有: 查询满足条件的对象集合 查询满足条件的单个对象 查询满足条件的对象的个数 查询某个类的某个属性 针对以上场景, JPA提供了多种查询 ...

  2. jpa多对多,中间表有额外查询字段设计,以及使用creteriaquery进行动态查询,使用自定义类进行数据封装返回

    一.jpa多对多__利用一对多实现(推荐) 尽量不要使用@manyToMany,特别是中间表有冗余字段的时候; 最好是在两个主表中加上@oneToMany,从表中加上@manyToOne来配置,加强j ...

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

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

  4. [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段

    译者的话:数据视图可以很方便地来交叉或是使用单独的数据源来显示各种视图,但是对于开发人员来说,数据视图有一个不太方便的功能就是开发或是定制出的数据视图根本没有办法重用,你不能像使用WEB部件一样随意地 ...

  5. mysql查询数据为0的所有字段6_MySQL8.0 初级学习笔记(六)查询数据

    MySQL8.0 初级学习笔记(六)查询数据 MySQL8.0 初级学习笔记(六)查询数据 查询有多种方法:单表查询,使用集合函数查询,连接查询,子查询,合并查询结果,为表和字段取别名,使用正则表达式 ...

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

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

  7. oracle中的单表查询,单字段与多字段排序

    -单表的查询学习 –查询表的所有数据 select *from 表名; *代表所有 select *from emp; –查询表中指定字段的值 :select 字段名1,字段名2,-from表名 se ...

  8. mysql union all 别名_MySQL Union合并查询数据及表别名、字段别名用法分析

    本文实例讲述了MySQL Union合并查询数据及表别名.字段别名用法.分享给大家供大家参考,具体如下: union关键字 SELECT s_id, f_name, f_price FROM frui ...

  9. mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据

    本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...

最新文章

  1. 使用 ale.js 制作一个小而美的表格编辑器(2)
  2. scala之Actors
  3. Can't connect to MySQL server on 'localhost' (10061)的解决办法!
  4. 试用期没过,因在公司上了1024网站...
  5. 太卷了~ 八股文,算法张口就来?2022版Java面试手册帮你全拿捏
  6. 网络安全技术之端口隔离
  7. mysql异常恢复工具_[MySQL异常恢复]mysql ibd文件恢复
  8. 28、Oracle(四)用户权限控制
  9. GC详解及Minor GC和Full GC触发条件
  10. mysql 锁怎么使用_MySQL锁的用法之行级锁
  11. 零基础学python实战-Python3.6零基础入门与实战 PDF 带源码视频版
  12. Eclipse启动无响应,停留在Loading workbench状态
  13. echarts中的自定义tooltip浮层展示
  14. mysql删库命令是啥_MySQL删除数据库的命令是什么?
  15. 几个冷门linux与BSD发行版中文学习论坛
  16. ppt关闭受保护视图
  17. JQuery入门级-基础
  18. 什么是游戏代理平台?游戏代理平台怎么选?
  19. 2006年35大BT种子网站
  20. [架构之路-181]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 2-容错性: 软件容错技术

热门文章

  1. 沈思:木瓜移动将成为手机上的Facebook
  2. TCP/IP卷一:63---TCP基础之(ARQ和重传、分组窗口和滑动窗口、流量控制和拥塞控制、设置重传超时)
  3. ubuntu无法apt_Ubuntu19.04更新软件源及系统更新时无法获得锁的处理
  4. UEFI启动U盘启动不了的解决办法
  5. ImageNet数据集用法
  6. Python中的JSON简介
  7. vmware中linux使用gparted调整磁盘大小并设置swap分区
  8. 从最近热门的700M看广电有线的供给侧改革
  9. 测试3W单声道带关断模式的音频放大器8002B
  10. telnet命令及测试网络端口的几种方法