原文地址: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. SpringMVC(1):Web MVC简介

    原文出处: 张开涛 Web MVC简介 1.1.Web开发中的请求-响应模型: 在Web世界里,具体步骤如下: 1.  Web浏览器(如IE)发起请求,如访问 2.  Web服务器(如Tomcat)接 ...

  2. jquery submit ie6下失效的原因分析及解决方法

    ie6中, $('a.btn').click(function(){ form.submit(); }) 点击失效: 分析: 微软低版本浏览器会先执行link标签的自身事件也就是href事件,这样就中 ...

  3. php文件路径获取文件名

    物理截取: $file = '/www/htdocs/inc/lib.inc.php'; $filename = basename($file); echo $filename, '<br/&g ...

  4. bzoj1036点权模板题

    /* HYSBZ1036 树上有1-n个结点,每个节点都有一个权值w 操作 CHANGE u t:把结点u的权值改为t QMAX u v:询问从点u到v的路径上的节点的最大权值 QSUM u v:询问 ...

  5. hdu2586 lca倍增法

    倍增法加了边的权值,bfs的时候顺便把每个点深度求出来即可 #include<iostream> #include<cstring> #include<cstdio> ...

  6. Excel学习笔记:if({1,0})用法

    一.if函数 判断是否满足条件,满足则返回第2个参数,不满足则返回第3个参数. 使用格式:=if(A1>0,"正","负") 二.if({1,0})用法 ...

  7. list的遍历

    package list; import java.util.ArrayList;import java.util.Iterator;import java.util.List; /* * list的 ...

  8. ubuntu基本用法

    • Linux上vim编辑器缩进的设置 • 从零开始UNIX环境高级编程(0):Linux下运行第一个程序

  9. HashTable、HashMap、ConcurrentHashMap的区别

    HashTable是做了同步的,HashMap未考虑同步.所以HashMap在单线程情况下效率较高:HashTable在的多线程情况下,同步操作能保证程序执行的正确性. HashMap是非线程安全的, ...

  10. java.lang.RuntimeException: Unable to get provider cn.jpush.android.service.DataProvider

    转自:https://blog.csdn.net/u014306335/article/details/80355169 Android Studio 3.1.2 报错: java.lang.Runt ...