HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式.,HQL 查询包括以下步骤:

  1、获取Hibernate Session对象

  2、编写HQL语句

  3、以HQL语句作为参数,调用Session的createQuery方法创建查询对象。

  4、如果HQL语句包含参数,则调用Query的setXxx方法为参数赋值。

  5、调用Query对象的list()或uniqueResult()方法返回查询结果列表(持久化实体集)

  本文展示三种基本的HQL查询用法

  1.1、基本查询 Query query = session.createQuery(hql);
  2、条件查询
    2.1、基本条件查询 : String hql = "from com.Gary.domain.User where id = 1";
    2.2、?占位符:String hql = "from com.Gary.domain.User where id = ?0";
            query.setParameter(0, id);
    2.3、命名占位符 :String hql = "from com.Gary.domain.User where id = :id ";
            query.setParameter("id", id);
  3.1、分页查询
        limit ?, ?
        String hql = "from com.Gary.domain.User";
        query.setFirstResult(1);
        query.setMaxResults(1);
package com.Gary.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class HQLDao { //1.基本查询
public void search()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
List<User> list = query.list(); //查询多条数据
//query.uniqueResult(); 查询唯一的数据 System.out.println(list);
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.1基本条件查询
public void search1()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = 1";
Query query = session.createQuery(hql);
User user = (User)query.uniqueResult(); System.out.println(user.getName());
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.2?占位符条件查询 id = 1
public void search2(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = ?0";
Query query = session.createQuery(hql); query.setParameter(0, id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.3命名占位符条件查询 id = 1
public void search3(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = :id";
Query query = session.createQuery(hql);
query.setParameter("id", id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } //3.1分页查询
public void search4()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user limit 0,1;
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
//设置一条数据为一页 访问第二页的数据
query.setFirstResult(1);
query.setMaxResults(1); List<User> list = query.list(); System.out.println(list.get(0).getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } }

HQLDao.java

  数据库user表  

  向数据库中添加假数据

  

1.HQL基本查询语句

  String hql = "from com.Gary.domain.User";
  Query query = session.createQuery(hql);

  HQLDao.java向数据库发起查询请求

//基本查询
public void search()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
List<User> list = query.list(); //查询多条数据
//query.uniqueResult(); 查询唯一的数据 System.out.println(list);
//模板:完成操作
beginTransaction.commit();
session.close(); }

  

package com.Gary.domain;

public class User {

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
} }

User.java

package com.Gary.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class HQLDao { //基本查询
public void search()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
List<User> list = query.list(); //查询多条数据
//query.uniqueResult(); 查询唯一的数据 System.out.println(list);
//模板:完成操作
beginTransaction.commit();
session.close(); } }

HQLDao.java

2.1基本条件查询

  String hql = "from com.Gary.domain.User where id = 1";
  Query query = session.createQuery(hql);

  HQLDao.java向数据库发起查询请求

//基本条件查询
public void search1()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = 1";
Query query = session.createQuery(hql);
User user = (User)query.uniqueResult(); System.out.println(user.getName());
//模板:完成操作
beginTransaction.commit();
session.close(); }

  

package com.Gary.domain;

public class User {

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
} }

User.java

package com.Gary.domain;

public class User {

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
} }

HQLDao.java

2.1?占位符条件查询

  String hql = "from com.Gary.domain.User where id = ?0";
  Query query = session.createQuery(hql);   query.setParameter(0, id);

  HQLDao.java向数据库发起查询请求

//2.2?占位符条件查询            id = 1
public void search2(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = ?0";
Query query = session.createQuery(hql); query.setParameter(0, id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); }

  

package com.Gary.domain;

public class User {

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
} }

User.java

package com.Gary.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class HQLDao { //1.基本查询
public void search()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
List<User> list = query.list(); //查询多条数据
//query.uniqueResult(); 查询唯一的数据 System.out.println(list);
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.1基本条件查询
public void search1()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = 1";
Query query = session.createQuery(hql);
User user = (User)query.uniqueResult(); System.out.println(user.getName());
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.2?占位符条件查询 id = 1
public void search2(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = ?0";
Query query = session.createQuery(hql); query.setParameter(0, id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } }

UserDao.java

2.3命名占位符

  String hql = "from com.Gary.domain.User where id = :id";
  Query query = session.createQuery(hql);
  query.setParameter("id", id);

  HQLDao.java向数据库发起查询请求

//2.3命名占位符条件查询            id = 1
public void search3(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = :id";
Query query = session.createQuery(hql);
query.setParameter("id", id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); }

  

package com.Gary.domain;

public class User {

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
} }

User.java

package com.Gary.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class HQLDao { //1.基本查询
public void search()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
List<User> list = query.list(); //查询多条数据
//query.uniqueResult(); 查询唯一的数据 System.out.println(list);
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.1基本条件查询
public void search1()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = 1";
Query query = session.createQuery(hql);
User user = (User)query.uniqueResult(); System.out.println(user.getName());
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.2?占位符条件查询 id = 1
public void search2(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = ?0";
Query query = session.createQuery(hql); query.setParameter(0, id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.3命名占位符条件查询 id = 1
public void search3(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = :id";
Query query = session.createQuery(hql);
query.setParameter("id", id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } }

HQLDao.java

3.1分页查询

        //操作 select * from user limit 0,1;
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);

  HQLDao.java向数据库发起查询请求

public void search4()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user limit 0,1;
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
//设置一条数据为一页 访问第二页的数据
query.setFirstResult(1);
query.setMaxResults(1); List<User> list = query.list(); System.out.println(list.get(0).getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); }

  

package com.Gary.domain;

public class User {

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
} }

User.java

package com.Gary.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.Gary.domain.User;
import com.Gary.utils.HibernateUtils; public class HQLDao { //1.基本查询
public void search()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
List<User> list = query.list(); //查询多条数据
//query.uniqueResult(); 查询唯一的数据 System.out.println(list);
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.1基本条件查询
public void search1()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = 1";
Query query = session.createQuery(hql);
User user = (User)query.uniqueResult(); System.out.println(user.getName());
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.2?占位符条件查询 id = 1
public void search2(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = ?0";
Query query = session.createQuery(hql); query.setParameter(0, id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } //2.3命名占位符条件查询 id = 1
public void search3(String id)
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user where id = 1;
String hql = "from com.Gary.domain.User where id = :id";
Query query = session.createQuery(hql);
query.setParameter("id", id);
User user = (User)query.uniqueResult(); System.out.println(user.getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } //3.1分页查询
public void search4()
{
Session session = HibernateUtils.getSession();
Transaction beginTransaction = session.beginTransaction(); //模板:开始HQL操作
//HQL完全面对类 from类的全包名 //操作 select * from user limit 0,1;
String hql = "from com.Gary.domain.User"; Query query = session.createQuery(hql);
//设置一条数据为一页 访问第二页的数据
query.setFirstResult(1);
query.setMaxResults(1); List<User> list = query.list(); System.out.println(list.get(0).getUsername());
//模板:完成操作
beginTransaction.commit();
session.close(); } }

HQLDao.java

JavaWeb_(Hibernate框架)Hibernate中数据查询语句HQL基本用法的更多相关文章

  1. JavaWeb_(Hibernate框架)Hibernate中数据查询语句Criteria基本用法

    Criteria进行数据查询与HQL和SQL的区别是Criteria完全是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹,使用Criteria 查询数据包括以下步骤: 1. 通过sessi ...

  2. hibernate框架学习之数据查询(HQL)

    lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...

  3. JavaWeb_(Hibernate框架)Hibernate中数据查询语句SQL基本用法

    本文展示三种在Hibernate中使用SQL语句进行数据查询基本用法 1.基本查询 2.条件查询 3.分页查询 package com.Gary.dao; import java.util.List; ...

  4. hibernate框架学习之数据查询(HQL)helloworld

    package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Se ...

  5. hibernate框架学习之数据查询(本地SQL)

    本地SQL查询方式 lHibernate框架支持使用原生态SQL语句进行操作数据库 l查询对象SQLQuery由Session获取 •SQLQuery sq = s.createSQLQuery(&q ...

  6. hibernate框架学习之数据查询(QBC)

    lQBC(Query By Criteria)是一种Hibernate中使用面向对象的格式进行查询的计数 lQBC查询方式步骤 •获取Session对象 •初始化Criteria对象(使用Sessio ...

  7. hibernate框架学习之数据查询(QBC)helloworld

    package cn.itcast.h3.query.hql; import java.util.List; import org.hibernate.Criteria; import org.hib ...

  8. (数据科学学习手册28)SQL server 2012中的查询语句汇总

    一.简介 数据库管理系统(DBMS)最重要的功能就是提供数据查询,即用户根据实际需求对数据进行筛选,并以特定形式进行显示.在Microsoft SQL Serve 2012 中,可以使用通用的SELE ...

  9. JavaWeb_(Struts2框架)Action中struts-default下result的各种转发类型

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

随机推荐

  1. c#连接数据库SqlHelper报错

    这是一个困扰了我好几天的问题,首先看一下报错信息 代码: private static string connectionString = ConfigurationManager.Connectio ...

  2. 三调数据库标注插件v1.3

    三调数据库标注插件 插件介绍: 本插件基于VS2010+ARCGIS Addin 开发,高效率处理三调数据,可以标注相关属性.检查尖角.检查节点平均密度.检查地类图斑属性一致性,方便数据导入建库软件之 ...

  3. c# 并行计算 Parallel

    //多重认证 Parallel.Invoke(() => { jianYanResult = new VerifiedMobileService().CheckMobileFun(request ...

  4. localStorage、sessionStorage和cookie的区别

    本地客户端(浏览器)查看三者信息: HTML4的本地存储:cookie 浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等根服务端进行数据交互. 一.co ...

  5. You are using the runtime-only build of Vue where the template compiler is not available.

    使用vue-cli搭建的项目,启动报错 You are using the runtime-only build of Vue where the template compiler is not a ...

  6. bash shell脚本之使用expr运算

    bash shell中的数学运算 cat test7: #!/bin/bash # An example of using the expr command var1= var2= var3=`exp ...

  7. 总结 String、StringBuffer与StringBuilder类中常用的方法

    一.String类的常用方法 1.获取: 1)获取字符串str长度 int i = str.length(); 2)根据位置(index)获取字符 char c = str.charAt(index) ...

  8. CHD-5.3.6集群上oozie安装

    参考文档:http://archive.cloudera.com/cdh5/cdh/5/oozie-4.0.0-cdh5.3.6/DG_QuickStart.html tar -zxvf  oozie ...

  9. Django基础(一):基础引用

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impor ...

  10. 解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题

    在docker中运行第三方服务时,通常需要绑定服务端口到本地主机.但使用 -p 参数进行的端口映射,会自动在iptables中建立规则,绕过firewalld,这对于端口级的黑白名单控制管理是很不利的 ...