HQL语句-程序员宅基地

hql常用查询语句
// HQL: Hibernate Query Language.
// 特点:
// >> 1,与SQL相似,SQL中的语法基本上都可以直接使用。
// >> 2,SQL查询的是表和表中的列;HQL查询的是对象与对象中的属性。
// >> 3,HQL的关键字不区分大小写,类名与属性名是区分大小写的。
// >> 4,SELECT可以省略.

// 1,简单的查询,Employee为实体名而不是数据库中的表名(面向对象特性)
hql = “FROM Employee”;
hql = “FROM Employee AS e”; // 使用别名
hql = “FROM Employee e”; // 使用别名,as关键字可省略

// 2,带上过滤条件的(可以使用别名):Where
hql = “FROM Employee WHERE id<10”;
hql = “FROM Employee e WHERE e.id<10”;
hql = “FROM Employee e WHERE e.id<10 AND e.id>5”;

// 3,带上排序条件的:Order By
hql = “FROM Employee e WHERE e.id<10 ORDER BY e.name”;
hql = “FROM Employee e WHERE e.id<10 ORDER BY e.name DESC”;
hql = “FROM Employee e WHERE e.id<10 ORDER BY e.name DESC, id ASC”;

// 4,指定select子句(不可以使用select *)
hql = “SELECT e FROM Employee e”; // 相当于"FROM Employee e"
hql = “SELECT e.name FROM Employee e”; // 只查询一个列,返回的集合的元素类型就是这个属性的类型
hql = “SELECT e.id,e.name FROM Employee e”; // 查询多个列,返回的集合的元素类型是Object数组
hql = “SELECT new Employee(e.id,e.name) FROM Employee e”; // 可以使用new语法,指定把查询出的部分属性封装到对象中

// 5,执行查询,获得结果(list、uniqueResult、分页 ) Query query = session.createQuery(“FROM Employee e WHERE id<3”);
query.setFirstResult(0);
query.setMaxResults(10); // 等同于 limit 0,10
//两种查询结果list、uniqueResult
// List list = query.list(); // 查询的结果是一个List集合
// Employee employee = (Employee) query.uniqueResult();// 查询的结果是唯一的一个结果,当结果有多个,就会抛异常

// 6,方法链
List list = session.createQuery(//
“FROM Employee e”)//
.setFirstResult(0)//
.setMaxResults(10)//
.list();

// 7,聚集函数:count(), max(), min(), avg(), sum()
hql = “SELECT COUNT(*) FROM Employee”; // 返回的结果是Long型的
hql = “SELECT min(id) FROM Employee”; // 返回的结果是id属性的类型

//8,分组: Group By … Having
hql = “SELECT e.name,COUNT(e.id) FROM Employee e GROUP BY e.name”;
hql = “SELECT e.name,COUNT(e.id) FROM Employee e GROUP BY e.name HAVING count(e.id)>1”;
hql = “SELECT e.name,COUNT(e.id) FROM Employee e WHERE id<9 GROUP BY e.name HAVING count(e.id)>1”;
hql = "SELECT e.name,COUNT(e.id) " + //
"FROM Employee e " + //
"WHERE id<9 " + //
"GROUP BY e.name " + //
"HAVING count(e.id)>1 " + //
“ORDER BY count(e.id) ASC”;
hql = "SELECT e.name,COUNT(e.id) AS c " + //
"FROM Employee e " + //
"WHERE id<9 " + //
"GROUP BY e.name " + //
"HAVING count(e.id)>1 " + // 在having子句中不能使用列别名
“ORDER BY c ASC”; // 在orderby子句中可以使用列别名

// 9,连接查询 / HQL是面向对象的查询
//>> 内连接(inner关键字可以省略)
hql = “SELECT e.id,e.name,d.name FROM Employee e JOIN e.department d”;
hql = “SELECT e.id,e.name,d.name FROM Employee e INNER JOIN e.department d”;
//>> 左外连接(outer关键字可以省略)
hql = “SELECT e.id,e.name,d.name FROM Employee e LEFT OUTER JOIN e.department d”;
//>> 右外连接(outer关键字可以省略)
hql = “SELECT e.id,e.name,d.name FROM Employee e RIGHT JOIN e.department d”;
//可以使用更方便的方法
hql = “SELECT e.id,e.name,e.department.name FROM Employee e”;

// 10,查询时使用参数
// >> 方式一:使用’?'占位
hql = “FROM Employee e WHERE id BETWEEN ? AND ?”;
List list2 = session.createQuery(hql)//
.setParameter(0, 5)// 设置参数,第1个参数的索引为0。
.setParameter(1, 15)//
.list();

// >> 方式二:使用变量名
hql = “FROM Employee e WHERE id BETWEEN :idMin AND :idMax”;
List list3 = session.createQuery(hql)//
.setParameter(“idMax”, 15)//
.setParameter(“idMin”, 5)//
.list();

// 当参数是集合时,一定要使用setParameterList()设置参数值
hql = “FROM Employee e WHERE id IN (:ids)”;
List list4 = session.createQuery(hql)//
.setParameterList(“ids”, new Object[] { 1, 2, 3, 5, 8, 100 })//
.list();

// 11,update与delete,不会通知Session缓存
// >> Update
int result = session.createQuery(//
“UPDATE Employee e SET e.name=? WHERE id>15”)//
.setParameter(0, “无名氏”)//
.executeUpdate(); // 返回int型的结果,表示影响了多少行。
// >> Delete
int result1 = session.createQuery(//
“DELETE FROM Employee e WHERE id>15”)//
.executeUpdate(); // 返回int型的结果,表示影响了多少行。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39898191/article/details/108483691

智能推荐

方正台式计算机初始bios密码,方正电脑刷BIOS的方法-程序员宅基地

文章浏览阅读2.4k次。方正电脑刷BIOS的方法作者:小龙博客 2013年08月24日  7条评论 分类:电脑技巧 系统 软件如果你有一台方正文祥E630,想装第一步、去找个别的机器上的硬盘,来接到你弄坏的这台上边,硬盘保护卡自动会失效的。建议那块硬盘上装有系统,推荐ghostXP(开机会提示安装保护卡,按ESC跳过就可)。如果找不到别的硬盘,可以试一下用U盘或光盘进PE系统备份和刷BIOS。第二步、在从新装硬盘启动并进..._方正电脑bios默认密码

PHP之CURL实现含有验证码的模拟登录_php curl 验证码 登录-程序员宅基地

文章浏览阅读7.6k次,点赞7次,收藏25次。博主最近在为学校社团写一个模拟登录教务系统来进行成绩查询的功能,语言当然是使用PHP啦,原理是通过php数据传输神器—curl扩展,向学校教务系统发送请求,通过模拟登录,获取指定url下的内容。 在开始实验之前有必要对curl扩展进行一下认识_php curl 验证码 登录

XHTML 1.0规范-程序员宅基地

文章浏览阅读112次。XHTML 1.0规范链接:http://www.w3.org/TR/Markup/ ..._xhtml1.0的基本规范

计算机二级桌面,2016计算机二级《MS OFFICE》模拟试题及答案-程序员宅基地

文章浏览阅读380次。2016计算机二级《MS OFFICE》模拟试题及答案1、在因特网浏览中,鼠标指针在网页链接上的形状是__C__A、左上箭头 B、左上箭头加上等待状态C、手型 D、手型加上拒绝浏览圆圈2、在用自己的计算机浏览WEB网的过程中,如果你发现自己喜欢的网页并希望以后多次访问,最好的方法是把这个页面地址__D__A、用Word文件保存下来 B、记忆下来C、用笔抄写到笔记本上 D、放到收藏夹中3、在桌面上创..._在资源管理器中文件排列不可以按()显示。a.名称b.类型c.文件大小d.图标大小d

Spring : 使用 jdbcTemplate_value="${jdbc.driver}-程序员宅基地

文章浏览阅读143次。1.jdbc.properteis : 参数配置文件jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///spring1jdbc.username=rootjdbc.password=root2. applicationContext.xml : 核心配置文件<?xml version="1.0"..._value="${jdbc.driver}

若依数据分页功能的实现_若依分页-程序员宅基地

文章浏览阅读1.6w次,点赞7次,收藏23次。分页的效果:分页处理一方面可以提高我们浏览数据的效率,符合我们浏览者的心理,减少了大量数据存在的杂乱问题;另一方面用sql进行数据查询时就实现分页,如mysql的limit,sql查询结果是第几页的数据,十分的效率;同时分页技术也可以,降低带宽使用,提高访问速度。分页的原理:前端采用参数pageNum 和pageSize;后端采用函数startPage 和getDataTable;后端分页原理的原理简析:先使用count(0)查询数据总数,再在查询语句之后加上LIMIT指令进行筛选。_若依分页

随便推点

vue2 实现日历组件,包含新增日程_vue 日历表插件-程序员宅基地

文章浏览阅读1.9k次。实现的最终效果:模板 html 部分js 部分css 部分_vue 日历表插件

009.智能合约的结构——05错误处理_错误智能合约-程序员宅基地

文章浏览阅读217次。智能合约的结构——错误处理_错误智能合约

STM32串口通信—串口的接收和发送详解_stm32串口接收发送-程序员宅基地

文章浏览阅读3.4k次,点赞17次,收藏54次。本文在于记录自己最近做项目过程中遇到的问题和总结,各种情况下串口通信在STM32的实际使用方面占有很大的比重,本文主要对串口的发送和接受做了一个详细的总结和规划,同时也对串口通信做一个简要的总结。本文大致总结了串口的发送和接收。串口的配置,使用查询或者中断来接收数据。串口的使用会很常用到,所以在这里对串口做一个总结,也算是对之前知识的一个回顾和总结,加强印象。_stm32串口接收发送

Qt音视频开发:使用海康SDK解码_qt 海康sdk-程序员宅基地

文章浏览阅读359次。海康SDK支持多种编码格式的解码,包括H.264、H.265、MPEG4等等,同时还提供了完善的错误处理和调试功能。在Qt音视频开发中,我们经常需要使用第三方的SDK来完成视频的解码和播放。而海康的SDK不仅提供了硬件设备的接口,还包括了视频流的解码功能,本文就将介绍如何在Qt中使用海康SDK进行视频解码。本文介绍了如何在Qt中使用海康SDK进行视频解码,包括环境搭建、SDK的调用和视频流数据的解码渲染。需要注意的是,在退出程序时,需要调用NET_DVR_Cleanup()函数释放SDK资源。_qt 海康sdk

Flutter AnimatedIcon 了解一下-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏3次。AnimatedIcon官方介绍惯例官网查看介绍:Shows an animated icon at a given animationprogress[1].The ..._flutter animatedicon

登云X7系列彰显神州数码Oracle合作新格局_深圳中院登云一体机项目-程序员宅基地

文章浏览阅读930次。移动芯片/操作系统/云计算应对产业变局,从一开始,神州数码就一直坚持自身业务的创新。2018年,是神州数码与甲骨文精诚合作的第20年。前不久,“瓷婚”庆典上,被称为双方合作baby的“登云数据库一体机”推出新的型号——X7系列。与上一代“登云”相比,“登云X7”系列不仅在网络和IO性能上实现了翻倍提升,更首度实现了软硬件一体化,基于强大的数据库平台,可支持交易和分析两大类应用,同时引入机器学习和人..._深圳中院登云一体机项目