什么是hql以及hql和sql的区别
一、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的区别相关推荐
- hql与sql的区别
1.hql与sql的区别 sql 面向数据库表查询 hql 面向对象查询 hql : from 后面跟的 类名+类对象 where 后 用 对象的属性做条件 sql: from 后面跟的是表名 ...
- hql与sql的区别(转)
原文地址:hql与sql的区别(转)作者:Eddy 1.hql与sql的区别 sql 面向数据库表查询 hql 面向对象查询 hql : from 后面跟的 类名+类对象 where 后 用 对象的属 ...
- 什么是hql,与sql的区别
一.什么是hql 1.hql 是hibernate里的查询语言 二.hql与sql的区别 SQL 1.表名/列名 查询所有(这里的student是表名) select * from student 2 ...
- HQL是什么HQL和SQL的区别
1. 什么是HQL? Hibernate独家查询语言,属于面向对象的查询语言, 编写HQL的时候,不需要写数据库表中字段,而是写属性的名称 HQL是Hibernate Quer ...
- mysql hql查询语句_使用Query进行HQL语句查询和SQL语句查询
HQL的语法比较简单,与普通SQL的区别之处是针对对象的不同,在查询语句中将sql中的表名替换成了sql中的持久化类名,因为hibernate机制是基于对象进行查询的. 不带参数的查询,语句是&quo ...
- hibernate mysql 关联查询_hibernate 查询缓存,以及在关联表查询缓存下使用HQL,而不是sql去查询...
什么是查询缓存? 也就是如果开启了查询缓存, 在 没有使用二级缓存的情况下,会 缓存第一次查询出来的数据的id. 第二次查询的时候, 如果查询的参数和查询语句没有变化,那么就会使用 第一次查询的出来的 ...
- 【HQL】HQL汇总
[HQL]HQL汇总 一.背景 SQL几乎是初级分析师80%的工作内容,当然在我的规划里,中级分析师已经要做好维度建模工作以及最好有OLAP系统工具啥的,或者已经能主动分析写文章了,尽量减少SQL的无 ...
- hive sql 和 spark sql的区别
目录 一.什么是hive,什么是spark (一)hive 1.hive在hadoop中的角色 2.hive和关系型数据库的区别 3.hive 架构及执行流程介绍 (二)spark 1.spark组件 ...
- orcle与mysql的区别_Orcle与MySQL的SQL语法区别:
Orcle与MySQL的SQL语法区别: 1.在Oracle中用 select * from all_users显示所有的用户,而在MySQL中显示所有数据 库的命令是 show databases ...
最新文章
- 留存方法论:如何培养用户使用习惯?
- socket中使用多线程创建并发服务器
- boost::fusion::detail::and_用法的测试
- 二叉树的链式结构递归遍历实现
- C#连接MySQL时出现Unable to connect to any of the specified MySQL hosts.错误
- MPLS ×××实验之OSPF sham-link
- java swing 列表框_如何在Swing中使用列表框?
- C语言里面双分号是啥意思,问什么C程序里总是提示缺少分号;,而明明有分号?...
- ModelForm操作
- 《Android音视频开发》— Android 书籍
- 程序员的英语水平要达到什么程度才行?
- termux目录_Termux 入门教程:架设手机 Server 下载文件
- 侍魂微信新服务器2019,侍魂胧月传说手游2019年5月14日微信问答试炼答案
- TPM设备管理系统对企业生产有何作用?
- 交叉熵损失函数权重计算
- 谷歌浏览器上传图片和图片另存为就卡死崩溃解决方案
- 关于时间的SQL条件查询
- 【手机号验证/前端】Vue2+elementUI编写一个手机号验证码登录页面,路由式开发(附完整代码)
- MySQL数据库的管理工具
- google输入法PK搜狗输入法