hibernate之HQL,Criteria与SQL

HQL是针对封装好的对象。

HQL :hibernate自己用的sql语句   -------HQL不能出现表中的任何内容 ---------不经常使用开发中

基本查询:String hql = "from com.sikiedu.domain.User";

Query query = session.createQuery(hql);List<User> list = query.list();//查询所有User user = (User) query.uniqueResult();//查询唯一数据

条件查询:

基本条件查询:hql = "from com.sikiedu.domain.User where  id = 1";

?占位符查询: hql = "from com.sikiedu.domain.User where  id = ?0 ?1 ?2"

Query query = session.createQuery(hql);

设置参数

query.setParameter(0,id);query.setString(0,id)

命名占位符查询:hql = "from com.sikiedu.domain.User where id = :id"

query.setParameter("id",value(传参id))

分页查询:limit ?,?

hql = "from com.sikiedu.domain.User"

Query query = session.createQuery(hql);

query.setFirstResultd(0);    //设置起始索引

query.setMaxResults(1);    //设置最大索引

List<User> list = query.list();

Criteria :

基本查询:CriteriaBuilder  criteriaBuilder = session.getCriteriaBuilder(); //得到CriteraBuilder 对象

CriteriaQuery<User> createQuery = criteriaBuilder.createQuery(User.class);//查询                           条件(首先知道查询什么类型数据)

Root<User> root= createQuery.from(User.class);//从User中查询

createQuery.select(root)//

List<User> resultList = session.cresteQuery(createQuery).getResultList();//执行查询

条件查询:createQuery.select(root).where(root.get("id").in("1"))//条件查询,得到id==1的对象

分页查询:

查询总记录数:CriteriaQuery<Long> criteria= criteriaBuilder.createQuery(Long.class);

Root<User> root= criteria.from(User.class);

criteria.select(criteriaBuilder.count(root));//criteriaBuilder.可以查询各种数

Long count =  session.createQuery(criteria).uniqueResult();

criteriaBuilder查询记录数:               

sql

基本查询:

String sql = "";

NativeQuery query= session.createSQLQuery(sql);//创建sql查询表query.addEntity(User.class);//自动封装成User对象数据List<User> list = query.list();System.out.println(list);

条件查询: 给?赋值

query.setParameter(1,"3");//从1开始从hinernate5.x

分页查询:

原文地址:https://www.cnblogs.com/ZTYCandy/p/10596560.html

时间: 2024-10-16 21:48:36

hibernate之HQL,Criteria与SQL的相关文章

Hibernate HQL,Criteria和SQL

Hibernate HQL和Criteria HQL:HQL(Hibernate Query Language)是hibernate专门用于查询数据的语句,有别于SQL,HQL 更接近于面向对象的思维方式. 1 /** 2 * ---------HQL查询根据name进行模糊查询-------- 3 4 */ 5 public class TestHibernate6 { 6 public static void main(String[] args) { 7 SessionFactory se

Hibernate的HQL和原生SQL返回简单对象

最近跟了一个技术经理,他有个要求就是所有的查询比结果都必需是对象,不是是map之类的,而且有很多对象的是很多实体相联合组成的对象,所有又专门研究了hibernate返回对象的知识 这次讨论的对象都是组合对象,就是很多实体相关联,取他们一部分字段的组合对象, Hql 首先扩展的对象 package com.hfview.bean; import java.util.ArrayList; import java.util.List; public class PersonEx { private S

Hibernate之HQL介绍

Hibernate中提供了多种检索对象的方式,主要包括以下种类: 导航对象图检索方式:根据已经加载的对象导航到其他对象 OID检索方式:根据对象的OID来检索对象 HQL检索方式:使用面向对象的HQL查询语言 QBC检索方式:使用QBC(Query By Criteria)API来检索对象.这种API封装了基于字符串形式的查询语句,提供了更加面向对象的查询接口 本地SQL检索方式:使用本地数据库的SQL查询语句 本文主要介绍第三种方式,也就是HQL检索对象. HQL(Hibernate Quer

Hibernate框架之Criteria 详解

自从学数据库以来,从SQL查询-HQL查询-到Criteria 查询.有人问我:掌握一种查询语句不就可以吗,为什么还要学Criteria 查询?我回答道:用到特定于数据库的SQL 语句,程序本身会依赖于特定的数据库,不了解SQL 语句,恐怕对使用HQL带来困难.Hibernate提供的Criteria查询帮助我们解决了这种问题. 下面介绍一下Criteria查询. 1.Criteria 查询采用面向对象方式封装查询条件,又称为对象查询 2.对SQL 语句进行封装 3.采用对象的方式来组合各种查询

Hibernate中HQL函数汇总及其说明

Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装.以下就是HQL的一些常用函数,有了这些函数,我们就可以拥有更多的灵活性,比如HQL如何取余,HQL如何返回集合的最值,HQL字符串处理,

【HQL】hibernate查询语言hql

hibernate查询语言hql 在hql中关键字不区分大小写,通常小写,类的名称和属性名称必须区分大小写 1.简单属性查询[重要] * 单一属性查询,返会属性结果集列表,元素类型和实体类中相应的类型一致 * 多个属性查询,多个属性查询返会对象数组,对象数组的长度取决于属性的个数 对象数组中元素的类型取决于属性在实体类中的类型 * 如果认为返会数组不够对象化,可以使用hql动态实例化Student对象 参见:SimplePropertyQueryTest.java 2.实体对象查询[重要] *

Hibernate 之HQL数据查询

1. HQL简介 HQL是面向对象的查询语言,与SQL查询语言相比,虽然在语法上类似,都是运行时进行解析,但HQL并不像SQL那样操作的是数据表,列等数据库对象,HQL所操作的对象是类,对象,属性等.它也可以支持继承和多态等特征,在Hibernate 提供的各种检索方式中,HQL是使用最广泛的. 2. Query接口 Hibernate框架负责解析HQL语句,根据映射配置信息,把HQL查询语句解析成相应的SQL语句来执行数据库的查询操作.这一过程依赖的就是Query接口.Query的实例由Ses

Hibernate六 HQL查询

HQL查询一 介绍1.HQL:Hibernate Query Language,是一种完全面向对象的查询语言.使用Hibernate有多重查询方式可供选择:hibernate的HQL查询,也可以使用条件查询,甚至使用原生的SQL查询语句.Hibernate还提供了一种数据过滤功能,这些都用于删选目标数据.2.查询步骤:(1)获取Hibernate Session对象(2)编写HQL语句(3)以HQL语句为参数,调用Session的createQuery()方法创建查询对象(4)如果HQL语句包含

Hibernate学习---第九节:Hibernate之hql

一.Hql 入门 1.实体类: package learn.hibernate.bean; import java.util.Date; import java.util.HashSet; import java.util.Set; /** * 持久化类设计 * 注意: * 持久化类通常建议要有一个持久化标识符(ID) * 持久化标识符通常建议使用封装类(例如:Integer 因为基本类型存在默认值) * 持久化类通常建议手动添加一个无参构造函数 (因为有些操作是通过放射机制进行的) * 属性通