HQL 是Hibernate Query Language的简写,即 hibernate 查询语言:HQL采用面向对象的查询方式。HQL查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询 方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。
 
在HQL中,你可以直接From你的实体对象来进行查询:
Java代码 
/**
 * 简单使用
 */ 
@SuppressWarnings("unchecked") 
public static void test1(){ 
    Session session = HibernateSessionFactory.currentSession(); 
    String hql = "from User u"; 
    Query query = session.createQuery(hql); 
    List<User> user = query.list(); 
    System.out.println("------------SQL执行完毕---------------"); 
    for (User us : user) { 
        System.out.println(us.getName()); 
    } 
} 
 
类的后面可以接别名
 
如果想单独查询某一列,可以这样使用:
Java代码 
/**
 * 查询某列
 */ 
@SuppressWarnings("unchecked") 
public static void test2(){ 
    Session session = HibernateSessionFactory.currentSession(); 
    String hql = "select name from User u"; 
    Query query = session.createQuery(hql); 
    List<String> user = query.list(); 
    System.out.println("------------SQL执行完毕---------------"); 
    for (String us : user) { 
        System.out.println(us); 
    } 
} 
 
如果想查询某几列的话,只是返回的内容不同了而已:
Java代码 
/**
 * 查询某几列
 */ 
@SuppressWarnings("unchecked") 
public static void test3(){ 
    Session session = HibernateSessionFactory.currentSession(); 
    String hql = "select id,name from User u"; 
    Query query = session.createQuery(hql); 
    List user = query.list(); 
    System.out.println("------------SQL执行完毕---------------"); 
    for(Object obj : user){ 
        Object[] arrObj = (Object[])obj; 
        System.out.println(arrObj[0] + "/t-->/t" + arrObj[1]); 
    } 
}

Java代码 
/**
 * 查询一条数据
 */ 
@SuppressWarnings("unchecked") 
public static void test3(){ 
    Session session = HibernateSessionFactory.currentSession(); 
    String hql = " from User u";

List list=session.createQuery(hql).setString(0, id).list();

//User user =(User) query.uniqueResult(); //当确定返回的实例只有一个或者null时 用uniqueResult()方法

if (list.size()==1){  
         return (User)list.get(0);  
     }else{  
         return null;  
     }

}

Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题的更多相关文章

  1. Hibernate查询对象的方法浅析

    Hibernate 查询对象是根据对象的id查询的,只要你有id (id唯一),则无论你是否其他字段与传过来的对象一致,都会查到该id在数据库对应的对象.若是在关联查询中,所关联表的id为空,即所查表 ...

  2. spring+hibernate实体类注解详解(非原创) + cascade属性取值

    @Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(nam ...

  3. javascript中json对象json数组json字符串互转及取值

    今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 var jsonString = '{"bar" ...

  4. [转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题

    原文地址:http://www.ablanxue.com/prone_3552_1.html 1. 查询整个映射对象所有字段 Java代码 //直接from查询出来的是一个映射对象,即:查询整个映射对 ...

  5. 关于Hibernate查询对象调用set方法自动同步到数据库解决方案

    Hibernate的get和load方法查询出的实体都是持久化对象,拿到该对象后,如果你调用了该对象的set方法,如果再同一个事务里面,那么在事务递交的时候,Hibernate会把你设置的值自动更新到 ...

  6. hibernate左连接查询时在easyUI的dataGrid中有些行取值为空的解决办法

    1 当使用left join左连连接,sql语句为 select t from SecondPage t left join t.rightNavbar n where 1=1 页面中出现了部分空行的 ...

  7. Cookie是以文本文件保存在客户端的,所以说cookie对象从本质而言是 字符串,所以取值时用字符串,或其数组

  8. 实现Django ORM admin view中model字段choices取值自动更新的一种方法

    有两个表,一个是记录网站信息的site表,结构如下: CREATE TABLE `site` ( `id` ) unsigned NOT NULL AUTO_INCREMENT, `name` ) N ...

  9. Hibernate查询部分字段并封装到指定类中

    Hibernate 使用查询部分/指定字段,有几种字现方式: 第一种方式是通过HQL语句实现,类似SQL,方法如下: String hql = "select id,name from Li ...

随机推荐

  1. python学习 (二十八) Python的for 循环

    1: for 循环可以循环如下类型: my_string = "abcabc" // 字符串类型 for c in my_string: print(c, end=' ') car ...

  2. Sqoop修改sqoop元信息实现job的增量导入

    最简单方式是按主键增量导入:http://blog.csdn.net/ggz631047367/article/details/50185319 以下方法只做存档 需求:redis缓存的数据隔段时间往 ...

  3. linux如何配置双机SSH信任然后双向免密码登陆

    linux如何配置双机SSH信任然后双向免密码登陆 www.111cn.net 更新:2015-01-14 编辑:edit02_lz 来源:转载 有时为了方便管理多台Linux主机,想实现双机之间信任 ...

  4. 第三章:使用 Android Studio 编程[Learn Android Studio 汉化教程]

    Learn Android Studio 汉化教程 Android Studio 本章包含如何在Android Studio中书写或生成代码. Android Studio 使用面向对象编程的思想来生 ...

  5. LeetCode题解 #8 String to Integer (atoi)

    又是一道恶心的简单题. 一开始没想到这么多情况的,幸好LeetCode是个很人性化的oj,能让你知道你在哪个case上错了,否则一辈子都过不了. 考虑不周到只能一个个补了. 列举一下恶心的case / ...

  6. Netty使用Google的ProtoBuf

    protobuf是由Google开发的一套对数据结构进行序列化的方法,可用做通信协议,数据存储格式,等等.其特点是不限语言.不限平台.扩展性强 Netty也提供了对Protobuf的天然支持,我们今天 ...

  7. C# XML文件读取

    using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; usin ...

  8. Spark-Mllib中各分类算法的java实现(简易教程)

    一.简述 Spark是当下非常流行的数据分析框架,而其中的机器学习包Mllib也是其诸多亮点之一,相信很多人也像我那样想要快些上手spark.下面我将列出实现mllib分类的简明代码,代码中将简述训练 ...

  9. 前端开发之javascript BOM篇

    主要内容: 1.BOM输出 2.BOM的对象 3.client的相关属性 4.offset的相关属性 5.scroll的相关属性 前情提要: 何谓BOM? 所谓 BOM 指的就是浏览器对象模型 Bro ...

  10. Apache Hive (五)DbVisualizer配置连接hive

    转自:https://www.cnblogs.com/qingyunzong/p/8715250.html 一.安装DbVisualizer 下载地址http://www.dbvis.com/ 也可以 ...