0、目录

  • 1、HQL
  • 2、使用HQL,根据name进行模糊查询
  • 3、查询Criteria
  • 4、使用Criteria,根据name进行模糊查询
  • 5、查询-标准SQL
  • 6、使用标准SQL,根据name进行模糊查询
  • 7、参考链接

1、HQL

HQL(Hibernate Query Language)是hibernate专门用于查询数据的语句,有别于SQL,HQL 更接近于面向对象的思维方式。

比如使用的是类的名字Product,而非表格的名字product_

2、使用HQL,根据name进行模糊查询

  1. 首先根据hql创建一个Query对象
  2. 设置参数(和基1的PreparedStatement不一样,Query是基0的)
  3. 通过Query对象的list()方法即返回查询的结果了。

注: 使用hql的时候,用的是类名Product,而不是表名product_
注: 使用hql的时候,不需要在前面加 select *

package com.how2java.test;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;import com.how2java.pojo.Product;public class TestHibernate {public static void main(String[] args) {SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();String name = "iphone";Query q =s.createQuery("from Product p where p.name like ?");q.setString(0, "%"+name+"%");List<Product> ps= q.list();for (Product p : ps) {System.out.println(p.getName());}s.getTransaction().commit();s.close();sf.close();}}

3、查询Criteria

使用Criteria进行数据查询。
与HQL和SQL的区别是Criteria 完全是 面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹

4、使用Criteria,根据name进行模糊查询

使用Criteria 查询数据

  1. 通过session的createCriteria创建一个Criteria 对象
  2. Criteria.add 增加约束。 在本例中增加一个对name的模糊查询(like)
  3. 调用list()方法返回查询结果的集合

除此之外,Criteria 还可以很方便的进行进行分页查询和获取总数

package com.how2java.test;import java.util.List;import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;import com.how2java.pojo.Product;public class TestHibernate {public static void main(String[] args) {SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();String name = "iphone";Criteria c= s.createCriteria(Product.class);c.add(Restrictions.like("name", "%"+name+"%"));List<Product> ps = c.list();for (Product p : ps) {System.out.println(p.getName());}s.getTransaction().commit();s.close();sf.close();}
}

5、查询-标准SQL

通过标准SQL语句进行查询
Hibernate依然保留了对标准SQL语句的支持,在一些场合,比如多表联合查询,并且有分组统计函数的情况下,标准SQL语句依然是效率较高的一种选择

6、使用标准SQL,根据name进行模糊查询

使用Session的createSQLQuery方法执行标准SQL语句

因为标准SQL语句有可能返回各种各样的结果,比如多表查询,分组统计结果等等。 不能保证其查询结果能够装进一个Product对象中,所以返回的集合里的每一个元素是一个对象数组。 然后再通过下标把这个对象数组中的数据取出来。

package com.how2java.test;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class TestHibernate {public static void main(String[] args) {SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();String name = "iphone";String sql = "select * from product_ p where p.name like '%"+name+"%'";Query q= s.createSQLQuery(sql);List<Object[]> list= q.list();for (Object[] os : list) {for (Object filed: os) {System.out.print(filed+"\t");}System.out.println();}s.getTransaction().commit();s.close();sf.close();}
}

7、参考链接

[01] How2j - Hibernate - 查询HQL

[02] How2j - 查询Criteria

[03] How2j - 查询标准SQL

391、Java框架46 -【Hibernate - 查询HQL、查询Criteria、查询标准SQL】 2020.10.19相关推荐

  1. Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询

    hql语句和sql语句不同,当我们使用hql语句查询时,要把SQL语句的表写成 实体类的类名,字段写成实体类的属性 基本查询:查出数据库中所有的数据 代码如下: //基本查询,查询所有的实体@Test ...

  2. Hibernate之HQL多表查询

    多表的查询进行使用HQL语句进行查询,HQL语句和SQL语句的查询语法比较类似 内连接查询 显示内连接 select * from customer c inner join orders o on ...

  3. JAVA框架:hibernate

    一:介绍 hibernate是java中的dao层,即和持久层打交道.底层也是数据库驱动.连接等.他也有orm,类和数据库的映射. 二.部署 下载地址:https://sourceforge.net/ ...

  4. java框架复习——hibernate

    目录 概述 hibernate特点 hibernate作用 hibernate系统架构 hibernate环境搭建 hibernate.cfg.xml剖析 数据库连接配置 可选配置 资源注册(注册映射 ...

  5. JAVA框架之Hibernate【配置文件详解】

    Hibernate配置文件主要功能是配置数据库连接和Hibernate运行时所需的各种属性,配置文件应该位于JAVA应用或者JAVA Web应用的类文件中,刚开始接触Hibernate的时候,感觉Hi ...

  6. 【Java框架】 Hibernate与Mybatis对比

    Hibernate与Mybatis对比 今天同事跟我说现在的小规模公司很少用hibernate,大部分都用mybatis.平时也经常接触这两方面,正好最近不怎么忙,查看网上其他相关技术文档 ,梳理下M ...

  7. 398、Java框架52 -【Hibernate - 分页、两种获取方式】 2020.10.27

    0.目录 1.分页 2.分页,从第3个开始,一共查询5个Product 3.延迟加载 4.对于id不存在的对象的处理 5.参考链接 1.分页 使用Criteria进行分页查询 无论你使用的是Oracl ...

  8. java框架篇---hibernate(一对多)映射关系

    一对多关系可以分为单向和双向. 一对多关系单向 单向就是只能从一方找到另一方,通常是从主控类找到拥有外键的类(表).比如一个母亲可以有多个孩子,并且孩子有母亲的主键作为外键.母亲与孩子的关系就是一对多 ...

  9. 458、Java框架112 -【MyBatis - 一级缓存、二级缓存】 2020.12.28

    目录 0.一级缓存 1.在一个Session里查相同id的数据 2.在不同Session里查相同id的数据 3.二级缓存 4.基于前一个知识点 5.观察无二级缓存 6.启动二级缓存 7.在Catego ...

最新文章

  1. HMM中文分词分析 知乎
  2. MySQL第8天:MySQL索引优化分析之SQL慢
  3. java for的增强_Java基础之增强for循环
  4. php滚动公告源码,好用的滚动公告HTML代码
  5. linux 32bit 改为64bit问题
  6. 区块链产业生态、存在问题及政策建议|一文读懂新趋势
  7. ffmpeg视频播放流程
  8. delphi启动ie调用本地html传参数_年轻人不讲武德啊!了解下浏览器如何解析html、css,js
  9. FeliCa简介____带命令协议说明
  10. linux qt qpa linuxfb,Linux qt qt.qpa.plugin: Could not load the Qt platform plugin xcb error解决方...
  11. CDSP认证是什么?数据安全认证专家含金量大吗?
  12. 例题 2-1 aabb 2-2 3n+1问题
  13. 如何测试计算机的运行速度,如何查看cpu运行速度
  14. 在电梯里你的一举一动
  15. 今天教你5种爆款标题,自媒体短视频标题写得好,月入过万少不了
  16. 大智慧财汇数据库l2接口的核心是什么?
  17. Wi-Fi 7全新升级,小米蓄势待发!
  18. 数据结构与算法—链表常见面试题(持续更新)
  19. 了解如何通过简单的技巧在Photoshop或GIMP中制作HDR图像
  20. 常用 EQ、NE、GT、LT、GE、LE的含义

热门文章

  1. [解决问题]Android Studio报错:some kotlin libraries attached to this project were compiled with a newer kot
  2. AGPS定位基本原理浅析
  3. 基于Syntiant TinyML Board与Edge Impulse的LED语音控制(Arduino/C++)
  4. 手机APP测试注意点
  5. PostgreSQL的json和jsonb比较
  6. msm8909 android5.1.1,MSM8909+Android5.1.1启动流程(1)---概述
  7. JAVA就业培训班一周有感杂记
  8. 4——Hive数仓项目完整流程(在线教育)
  9. Holy Grail 计蒜客41305
  10. Windows应用程序安装向导制作