zoukankan      html  css  js  c++  java
  • JPA查询单个字段和多个字段返回类型总结

    原文地址: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[]>


    ---

  • 相关阅读:
    html5——拖拽
    html5——多媒体(四)
    html5——多媒体(三)
    html5——多媒体(二)
    html5——全屏滚动
    html5——web字体
    html5——伸缩比例案例(携程)
    html5——伸缩比例
    html5——伸缩布局
    html5——多列布局
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/9836779.html
Copyright © 2011-2022 走看看