一、hql的定义

Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性。

二、HQL

1.HQL里面的类名和属性名区分大小写,但关键字不区分大小写
2. ? 从下标0开始计算位置
3. HQL支持:命名参数
4. HQL是面向对象的查询语言

三、SQL

1.SQL里面的表名和列名不区分大小写
2.? 从顺序1开始计算位置
3.SQL不支持:命名参数
4.SQL是面向结构的查询语言

四、处理返回的结果集

4.1 单个对象:通过查询语句得到这个对象的所有属性值
示例代码:

@Testpublic void list() {String hql="from User";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);//运行这个批量对象List<User> list = query.list();for (User user : list) {System.out.println(user);}transaction.commit();SessionFactoryUtil.closeSession();}

4.2 Object[]:通过查询语句得到指定的几个属性的值
示例代码:

@Testpublic void list2() {String hql="select userName,userPwd from User";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);//运行这个批量对象List<Object[]> list = query.list();for (Object[] user : list) {System.out.println(Arrays.toString(user));}transaction.commit();SessionFactoryUtil.closeSession();}

4.3 Map
示例代码:

@Testpublic void list5() {//      第二种hql语句String hql="select new map(u.userName,u.userPwd) from User u";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);//运行这个批量对象List<Map<Object, Object>> list = query.list();for (Map<Object, Object> user : list) {System.out.println(user);}transaction.commit();SessionFactoryUtil.closeSession();}

4.4 new 构造方法(attr1,attr2)
示例代码:

@Testpublic void list6() {String hql="select new User(u.userName,u.userPwd) from User u";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);//运行这个批量对象List<User> list = query.list();for (User user : list) {System.out.println(user);}transaction.commit();SessionFactoryUtil.closeSession();}/**

五.hql中使用占位符

5.1 ?占位符
从下标0开始计算位置
示例代码:

@Testpublic void list7() {String hql="select u.userName,u.userPwd from User u where u.userName=?";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);query.setString(0, "zs");//运行这个批量对象List<Object[]> list = query.list();for (Object[] user : list) {System.out.println(Arrays.toString(user));}transaction.commit();SessionFactoryUtil.closeSession();}

5.2 :命名参数
示例代码:

@Testpublic void list8() {String hql="select u.userName,u.userPwd from User u where u.userName=:uname";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);query.setString("uname", "zs");//运行这个批量对象List<Object[]> list = query.list();for (Object[] user : list) {System.out.println(Arrays.toString(user));}transaction.commit();SessionFactoryUtil.closeSession();}

六.连接查询

示例代码:

@Testpublic void list9() {String hql="select o.orderNo,oi.quantity from Order o,OrderItem oi " + " where o=oi.order and o.orderId=:orderid";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);query.setInteger("orderid", 3);//运行这个批量对象List<Object[]> list = query.list();for (Object[] objects : list) {System.out.println(Arrays.toString(objects));}transaction.commit();SessionFactoryUtil.closeSession();}

七.聚合函数

示例代码:

@Testpublic void list12() {String hql="select count(*),max(b.price),min(b.price),avg(round(b.price)),sum(b.price) from Book b";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);//运行这个批量对象List<Object[]> list = query.list();for (Object[] objects : list) {System.out.println(Arrays.toString(objects));}transaction.commit();SessionFactoryUtil.closeSession();}

八.hql分页

示例代码:

@Testpublic void list13() {int page=1;int row=3;String hql="from User";Session session = SessionFactoryUtil.getSession();Transaction transaction = session.beginTransaction();//创建批量对象Query query = session.createQuery(hql);query.setFirstResult((page-1)*row);//设置起始记录下标query.setMaxResults(row);//设置返回的最大结果集 //运行这个批量对象List<User> list = query.list();for (User user : list) {System.out.println(user);}transaction.commit();SessionFactoryUtil.closeSession();}

什么是hql以及hql和sql的区别相关推荐

  1. hql与sql的区别

    1.hql与sql的区别 sql 面向数据库表查询 hql 面向对象查询 hql : from 后面跟的 类名+类对象 where 后 用 对象的属性做条件 sql: from 后面跟的是表名     ...

  2. hql与sql的区别(转)

    原文地址:hql与sql的区别(转)作者:Eddy 1.hql与sql的区别 sql 面向数据库表查询 hql 面向对象查询 hql : from 后面跟的 类名+类对象 where 后 用 对象的属 ...

  3. 什么是hql,与sql的区别

    一.什么是hql 1.hql 是hibernate里的查询语言 二.hql与sql的区别 SQL 1.表名/列名 查询所有(这里的student是表名) select * from student 2 ...

  4. HQL是什么HQL和SQL的区别

    1. 什么是HQL? Hibernate独家查询语言,属于面向对象的查询语言,             编写HQL的时候,不需要写数据库表中字段,而是写属性的名称 HQL是Hibernate Quer ...

  5. mysql hql查询语句_使用Query进行HQL语句查询和SQL语句查询

    HQL的语法比较简单,与普通SQL的区别之处是针对对象的不同,在查询语句中将sql中的表名替换成了sql中的持久化类名,因为hibernate机制是基于对象进行查询的. 不带参数的查询,语句是&quo ...

  6. hibernate mysql 关联查询_hibernate 查询缓存,以及在关联表查询缓存下使用HQL,而不是sql去查询...

    什么是查询缓存? 也就是如果开启了查询缓存, 在 没有使用二级缓存的情况下,会 缓存第一次查询出来的数据的id. 第二次查询的时候, 如果查询的参数和查询语句没有变化,那么就会使用 第一次查询的出来的 ...

  7. 【HQL】HQL汇总

    [HQL]HQL汇总 一.背景 SQL几乎是初级分析师80%的工作内容,当然在我的规划里,中级分析师已经要做好维度建模工作以及最好有OLAP系统工具啥的,或者已经能主动分析写文章了,尽量减少SQL的无 ...

  8. hive sql 和 spark sql的区别

    目录 一.什么是hive,什么是spark (一)hive 1.hive在hadoop中的角色 2.hive和关系型数据库的区别 3.hive 架构及执行流程介绍 (二)spark 1.spark组件 ...

  9. orcle与mysql的区别_Orcle与MySQL的SQL语法区别:

    Orcle与MySQL的SQL语法区别: 1.在Oracle中用 select * from all_users显示所有的用户,而在MySQL中显示所有数据 库的命令是 show databases ...

最新文章

  1. 留存方法论:如何培养用户使用习惯?
  2. socket中使用多线程创建并发服务器
  3. boost::fusion::detail::and_用法的测试
  4. 二叉树的链式结构递归遍历实现
  5. C#连接MySQL时出现Unable to connect to any of the specified MySQL hosts.错误
  6. MPLS ×××实验之OSPF sham-link
  7. java swing 列表框_如何在Swing中使用列表框?
  8. C语言里面双分号是啥意思,问什么C程序里总是提示缺少分号;,而明明有分号?...
  9. ModelForm操作
  10. 《Android音视频开发》— Android 书籍
  11. 程序员的英语水平要达到什么程度才行?
  12. termux目录_Termux 入门教程:架设手机 Server 下载文件
  13. 侍魂微信新服务器2019,侍魂胧月传说手游2019年5月14日微信问答试炼答案
  14. TPM设备管理系统对企业生产有何作用?
  15. 交叉熵损失函数权重计算
  16. 谷歌浏览器上传图片和图片另存为就卡死崩溃解决方案
  17. 关于时间的SQL条件查询
  18. 【手机号验证/前端】Vue2+elementUI编写一个手机号验证码登录页面,路由式开发(附完整代码)
  19. MySQL数据库的管理工具
  20. google输入法PK搜狗输入法

热门文章

  1. 市面上开源项目这么多,别无脑上,需谨慎行事
  2. 基于音频指纹技术的微信“摇一摇搜歌”和QQ音乐“听歌识曲”
  3. pymssql数据库操作
  4. 随便学学Python-day10-函数的进阶
  5. The Sandbox 与育碧达成合作,疯狂兔子闯入元宇宙
  6. python字符串模糊匹配 - RapidFuzz
  7. wifi模块有哪些关键指标?如何选择wifi模块?ESP32-S3Wi-Fi模组
  8. IDEA 中如何完成Git 和SVN 版本控制的切换
  9. keras提取网络中间层输出、中间层特征
  10. 威伦触摸屏界面设置密码登录权限