如果你要使用JPA就行底层操作,那么会涉及到很多查询的代码编写,虽然JPA屏蔽了复杂代码的编写,但是还是需要我们根据业务逻辑来编写一些额外的接口代码。

这里就来归纳总结下一些查询写法的编码示例。

HQL根据参数查询所有结果:@Query("select t from Test t where t.userId =?1")

public List findAllByUserId(String userId);

语句中“?1”代表方法传来的第一个参数,你可以写多个参数。

如果根据该参数,查询你确定只有一行记录,可以把查询这样写:@Query("select t from Test t where t.userId =?1 and rownum

为什么这样写?因为我碰到过某程序设计本该返回一行数据,但是由于程序BUG等因素,导致出现多条数据。

所以在查询时,每次都要从数据库返回大量数据,严重影响了数据库网络性能。所以我建议,有些事情,最好多做一步。

如果想执行联合查询,然后返回一个自定义对象,此时必须传分页参数Pageable。@Query("select a.createTime as createTime,b.id as id  from Testa a,Testb b " +

" where a.id=b.id and t.level=?1 group by a.id " +

" order by a.createTime asc, b.createTime asc")

public Page searchAllByLevel(int level,Pageable pageRequest);

TempObj就有两个字段createTime和id,对应as出来的查询字段。注意这里写的仍然是HQL。

如果你想直接SQL来返回对象,注意对象和返回的列必须驼峰对应上才可以。@Query(value="select * from t_test t where t.userId = ?1 and rownum

public List findAllByUserId(String userId);

这个示例不是联合查询,但是可以看出,我并非执行HQL而是执行SQL来查询整个表,而Test是t_test的对应类,肯定的驼峰对应的。

统计类查询@Query("select count(t) from Test t where t.userId = ?1")

public List findCountAllByUserId(String userId);

因为这里是Count,所以List第一个索引就是要获取的统计数量值。@Query("select count(*) from Test t where t.userId = ?1")

public BigDecimal findCountAllByUserId(String userId);

或者你可以直接返回BigDecimal,因为你知道返回的是什么,所以上层使用时,可以直接判断统计量。if(bigDecimal != null && bigDecimal.intValue() > 0) ;

如果是SUM类的统计,可以直接返回Long:@Query("select sum(t.price) from Test t where t.userId = ?1")

public Long findSumAllByUserId(String userId);

执行原始SQL查询@Query(value="select t.id as id,t.game_Name as gameName from t_test t where t.userId = ?1",nativeQuery = true)

public List findAllByName(String userId);

编写原始SQL,然后注解查询写nativeQuery = true,返回List,List中的Object数据根据索引获取对应的值。

如果你返回就是一个值,那可以不写成数组:@Query(value="select max(t.price) from t_test t where t.userId = ?1",nativeQuery = true)

public List findMaxByName(String userId);

以上代码能满足日常基本查询的需求,可以参考。

对应到对象 数据库驼峰_SpringJPA底层DAO查询的写法归类总结相关推荐

  1. 对应到对象 数据库驼峰_从源码角度理解Mybatis字段映射(一) - 驼峰式命名

    凯伦说,公众号ID: KailunTalk,努力写出最优质的技术文章,欢迎关注探讨. 在上篇博客-[JDBC] 处理ResultSet,构建Java对象中提到,我们需要分析Mybatis在转换Resu ...

  2. 对应到对象 数据库驼峰_驼峰

    一.前言 需要知道的是,在Java开发中,实体一般采取陀骆峰的形式命名,而数据库表设计,会采取下划线的方式.数据库大小写是否敏感的问题与系统有关.通常认为Linux环境下,大小写是敏感的,Window ...

  3. 对应到对象 数据库驼峰_【GI的自主空间数据库】一种竞争力,叫技术引领;一种竞争力,叫时间沉淀...

    引子:GI的自主空间数据库及GIS框架来自于求学时MAPGIS的引导,工作时ARCGIS的追随,读博时IBM和Microsoft2篇文献....即使在大数据技术发展的今天,自主空间数据库存储仍然有其技 ...

  4. 什么是m叉树_不懂数据库索引的底层原理?那是因为你心里没点b树

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:苏苏喂 cnblogs.com/sujing/p/11110292.html 题外话 ...

  5. Java中的几种对象(PO、VO、DAO、BO、POJO)

    1.VO PO O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在O/R Mappin ...

  6. oracle树子类遍历父类_不懂数据库索引的底层原理?那是因为你心里没点b树

    前几天下班回到家后正在处理一个白天没解决的bug,厕所突然传来对象的声音: 对象:xx,你有<时间简史>吗? 我:我去!妹子,你这啥癖好啊,我有时间也不会去捡屎啊! 对象:...人家说的是 ...

  7. 不懂数据库索引的底层原理?那是因为你心里没点b树

    点击上方"后端技术精选",选择"置顶公众号" 技术文章第一时间送达! 作者:苏苏喂 cnblogs.com/sujing/p/11110292.html 题外话 ...

  8. java bo vo_秒懂对象 PO、VO、DAO、BO、POJO!

    前情提要 可能有些才入行的朋友不是很懂这些对象的含义,有点模糊,感觉都差不多,所以本篇文章就是带大家熟悉一下. 简述: java的几种对象(PO,VO,DAO,BO,POJO)解释: 一.PO:per ...

  9. 发现数据对象 -- 数据库开发的关键

    发现数据对象 -- 数据库开发的关键   不管你是开发简单的数据库系统,还是复杂的系统甚至是做数据仓库,选用Sybase或Oracle,乃至简单的用Access或Foxpro,只要是关系型数据库都难免 ...

最新文章

  1. 如何:在 Visual Studio 中添加或移除引用(转载)
  2. 与vnpy相关的有用博客网址
  3. html中前台布局特点,HTML5弹性布局有什么优点
  4. 即构科技张靖雨:以最优的用户体验为第一评估要素
  5. 文件包含——本地无视后缀(二)
  6. windows如何使用ssh登录ubuntu
  7. android 读取文件内容,Android读写文件 获取文件并读取写入数据
  8. h5-localStorage实现缓存ajax请求数据
  9. for循环执行 mybatis_MyBatis 插件机制详解
  10. 属性用途_onenote样式系列②:详解11种默认样式,附style属性值
  11. 移动端JS事件、移动端框架
  12. intel 10G BASE-T 以太网控制器: X540
  13. 【python技能树】python编码规范
  14. 射频识别技术漫谈(17)——射频卡中数据的存储形式
  15. 【SCIENTIFIC AMERICAN】Internet Cables Could Also Measure Quakes 网络光纤也可以用来测量地震(20191204)
  16. 阿里巴巴基础设施挑战与芯片策略
  17. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?
  18. PHP 互亿无线语音通知
  19. 众人逃离北上广后又逃回:观念不合拍还要拼爹
  20. 获取摄像头视频流,进行人脸识别(支持单人脸识别、车牌识别)

热门文章

  1. [转载] 百科全说——漆浩:怎样健康饮茶远离误区(11-03-09)
  2. python生成xml界面,Python如何用dom模块生成XML文
  3. mysql 函数怎样创建_mysql里怎样创建函数
  4. java 类似datatable_在java中实现类似于.net中的DataTable,请各位看看,这种方法可行吗?...
  5. 信息学奥赛一本通 1121:计算矩阵边缘元素之和 | OpenJudge NOI 1.8 03:计算矩阵边缘元素之和
  6. 数三角形(51Nod-2497)
  7. 短信计费(信息学奥赛一本通-T1398)
  8. 55 SD配置-定价配置-定义定价过程的条件排斥
  9. 点击list view中一行内容可以在combox中显示_java版飞机大战小游戏详细教程(零基础小白也可以分分钟学会!)...
  10. 1001:Hello,World! 【信息学奥赛一本通(C++版)在线评测系统】