`

hibernate——hql总结

阅读更多

1. 查询整个映射对象所有字段 

Java代码
  1. //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段     
  2.         String hql = "from Users";     
  3.         Query query = session.createQuery(hql);     
  4.              
  5.         List<Users> users = query.list();     
  6.         for(Users user : users){     
  7.             System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());     
  8.         }     
  9.     
  10.  输出结果为:     
  11. name1 : password1 : 1    
  12. name2 : password2 : 2    
  13. name3 : password3 : 3    



2.查询单个字段  

Java代码 
  1. //查询单个字段     
  2.         String hql = " select name from Users";     
  3.         Query query = session.createQuery(hql);     
  4.              
  5.         List<String> list = query.list();     
  6.         for(String str : list){     
  7.             System.out.println(str);     
  8.         }     
  9. 输出结果为:     
  10. name1     
  11. name2     
  12. name3    

3.查询其中几个字段 

  1. //查询其中几个字段     
  2.         String hql = " select name,passwd from Users";     
  3.         Query query = session.createQuery(hql);     
  4.         //默认查询出来的list里存放的是一个Object数组     
  5.         List<Object[]> list = query.list();     
  6.         for(Object[] object : list){     
  7.             String name = (String)object[0];     
  8.             String passwd = (String)object[1];     
  9.                  
  10.             System.out.println(name + " : " + passwd);     
  11.         }     
  12. 输出结果为:     
  13. name1 : password1     
  14. name2 : password2     
  15. name3 : password3    

4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回 
引用

//查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了   
        String hql = " select new list(name,passwd) from Users";   
        Query query = session.createQuery(hql);   
        //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了   
        List<List> list = query.list();   
        for(List user : list){   
            String name = (String)user.get(0);   
            String passwd = (String)user.get(1);   
               
            System.out.println(name + " : " + passwd);   
        }   
        /**  
        输出结果为:  
         name1 : password1  
        name2 : password2  
        name3 : password3  
         */ 


5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回 

  1. //查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了     
  2.         String hql = " select new map(name,passwd) from Users";     
  3.         Query query = session.createQuery(hql);     
  4.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了     
  5.         List<Map> list = query.list();     
  6.         for(Map user : list){     
  7.             //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值     
  8.             //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了     
  9.             String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形     
  10.             String passwd = (String)user.get("1");     
  11.                  
  12.             System.out.println(name + " : " + passwd);     
  13.         }     
  14.         /**   
  15.         输出结果为:   
  16.          name1 : password1   
  17.         name2 : password2   
  18.         name3 : password3   
  19.          */    


6.修改默认查询结果(query.list())不以Object[]数组形式返回,以Set形式返回,但是因为Set里是不允许有重复的元素,所以:username和password的值不能相同。只需将hql改为:String hql = " select new set(name,passwd) from Users"; 

7.修改默认查询结果(query.list())不以Object[]数组形式返回,以自定义类型返回 
自定义类: 

 
  1. package com.domain;     
  2.     
  3. public class MyUser {     
  4.     
  5.     private String username;     
  6.     private String password;     
  7. //因为:String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数     
  8.     public MyUser(String username,String password){     
  9.         this.username = username;     
  10.         this.password = password;     
  11.     }     
  12.          
  13.     public String getUsername() {     
  14.         return username;     
  15.     }     
  16.     public void setUsername(String username) {     
  17.         this.username = username;     
  18.     }     
  19.     public String getPassword() {     
  20.         return password;     
  21.     }     
  22.     public void setPassword(String password) {     
  23.         this.password = password;     
  24.     }     
  25.          
  26.          
  27. }    

 

  1. //通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里<hibernate-mapping auto-import="true"> auto-import默认值为true(所以auto-import属性也可以不写),自动导入了     
  2.         String hql = " select new  com.domain.MyUser(name,passwd) from Users";     
  3.         Query query = session.createQuery(hql);     
  4.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了     
  5.         List<MyUser> myUsers = query.list();     
  6.         for(MyUser myUser : myUsers){     
  7.             String name = myUser.getUsername();     
  8.             String passwd = myUser.getPassword();     
  9.             System.out.println(name + " : " + passwd);     
  10.         }     
  11.         /**   
  12.         输出结果为:   
  13.         name1 : password1   
  14.         name2 : password2   
  15.         name3 : password3   
  16.          */    

8:条件查询 

 
  1. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数     
  2.         String hql = "from Users where name=? and passwd=?";     
  3.         Query query = session.createQuery(hql);     
  4.         //第1种方式     
  5. //      query.setString(0, "name1");     
  6. //      query.setString(1, "password1");     
  7.         //第2种方式     
  8.         query.setParameter(0"name1",Hibernate.STRING);     
  9.         query.setParameter(1"password1",Hibernate.STRING);     
  10.         List<Users> list = query.list();     
  11.         for(Users users : list){     
  12.             System.out.println(users.getId());     
  13.         }     

 

  1. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数     
  2.         String hql = "from Users where name=:username and passwd=:password";     
  3.         Query query = session.createQuery(hql);     
  4.         //第1种方式     
  5. //      query.setString("username", "name1");     
  6. //      query.setString("password", "password1");     
  7.         //第2种方式,第3个参数确定类型     
  8.         query.setParameter("username""name1",Hibernate.STRING);     
  9.         query.setParameter("password""password1",Hibernate.STRING);     
  10.         List<Users> list = query.list();     
  11.         for(Users users : list){     
  12.             System.out.println(users.getId());     
  13.         }    

 

  1. //条件查询,通过setProperties设置参数     
  2.         String hql = "from Users where name=:username and passwd=:password";     
  3.         Query query = session.createQuery(hql);     
  4.         //MyUser类的2个属性必须和:username和:password对应     
  5.         MyUser myUser = new MyUser("name1","password1");     
  6.         query.setProperties(myUser);     
  7.         List<Users> list = query.list();     
  8.         for(Users users : list){     
  9.             System.out.println(users.getId());     
  10.         }  

分享到:
评论

相关推荐

    Hibernate——符合Java习惯的关系数据库持久化

    **正文** ...总结来说,Hibernate是Java开发中的重要工具,它通过ORM技术简化了数据库操作,提高了开发效率。了解并熟练掌握Hibernate,对于Java开发者来说,无疑能够提升在项目开发中的专业水平。

    Hibernate总结——课程管理

    使用`Session.get()`或`Session.load()`根据主键获取对象,或者使用`Session.createQuery()`或`Session.createCriteria()`执行HQL(Hibernate查询语言)或SQL查询。 3. **更新(Update)** 修改对象的属性,然后...

    Hibernate_HQL案例.zip

    // 1.查询所有 // 2.条件查询(where、模糊匹配) // 3.范围查询(OR、IN、AND、NOT、&gt;、&lt;、、&gt;=、、...———————————————— 原文链接:https://blog.csdn.net/qq_29001539/article/details/105154689

    Hibernate HQL查询.docx

    Hibernate 提供了一种非常强大的查询语言——HQL(Hibernate Query Language),它在语法上与 SQL 类似但功能更为强大,因为它支持面向对象的特性,例如继承、多态性和关联等。 #### 二、HQL 的特点 1. **面向对象*...

    Hibernate使用——入门

    **Hibernate使用——入门** Hibernate 是一个强大的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。这篇博文将引导你入门Hibernate,理解其基本概念和使用方法。 **1. Hibernate概述** ...

    Hibernate 4——Hello World

    在本文中,我们将深入探讨如何使用Hibernate 4框架进行初步的“Hello World”实践。...这只是一个基础,Hibernate还提供了更高级的功能,如查询语言(HQL)、 Criteria API、缓存机制等,等待你去探索和掌握。

    Hibernate4总结文档

    Hibernate提供了一种面向对象的查询语言——HQL,类似于SQL但更加面向对象,可以方便地进行复杂的对象查询。 7. 第二级缓存: Hibernate支持第二级缓存,通过配置`cache.provider_class`可以选择缓存提供商。不过...

    7.1.1Hibernate的入门必备——文档和源码

    【标题】"7.1.1Hibernate的入门必备——文档和源码"主要涉及的是Java领域的一个重要ORM框架——Hibernate的基础学习。Hibernate是一种用于Java应用的开源对象关系映射(ORM)工具,它允许开发者将Java类与数据库表...

    孙卫琴hibernate source code2

    `chapter5`关注的是Hibernate的查询语言——HQL(Hibernate Query Language)和Criteria API。HQL是一种面向对象的查询语言,允许开发者用类名和属性名来编写查询,极大地提高了代码的可读性。Criteria API提供了一...

    hibernate4.22源码

    4. **HQL(Hibernate Query Language)**:Hibernate 提供了自己的SQL方言——HQL,它是一种面向对象的查询语言。`org.hibernate.hql`包包含了HQL解析器和执行器,可以用于执行复杂的查询。 5. **事务管理**:在`...

    hibernate3.2.5

    总结,解决“Update queries only supported through HQL”的关键在于理解和掌握Hibernate的HQL更新查询,以及充分利用其面向对象的特性。通过使用Hibernate 3.2.5版,开发者能够更加高效、安全地进行数据操作,提高...

    struts2+hibernate整合例子——新闻管理系统

    总结来说,"struts2+hibernate整合例子——新闻管理系统"是一个典型的Java Web应用示例,展示了如何利用Struts2的MVC模式和Hibernate的ORM能力,实现对新闻数据的CRUD操作及高级查询。这个系统可能包含了Action类、...

    Hibernate_query查询数据表中的一个字段.

    Hibernate提供了一种灵活的查询语言——HQL(Hibernate Query Language),以及 Criteria 查询和 Criteria API,它们都可以用来获取数据表中的特定字段。 二、Hibernate配置 在使用Hibernate进行查询前,首先需要...

    Hibernate_NSQL&HQL增删改操作

    ### Hibernate中的NSQL与HQL增删改操作详解 #### NSQL(Native SQL)与HQL(Hibernate Query Language) 在Hibernate框架中,进行数据库操作时,开发者可以选择使用两种不同的查询语言:NSQL(Native SQL)和HQL...

    hibernate3.6.10final官方文档

    Hibernate提供了一种面向对象的查询语言——HQL(Hibernate Query Language),类似于SQL但更贴近Java对象。HQL可以方便地进行对象级别的查询,如选择、聚合、关联等操作。 六、 Criteria查询 除了HQL,Hibernate还...

    Hibernate源码解析(三)

    接下来,文章可能会详细讨论Hibernate的查询语言——HQL(Hibernate Query Language)和Criteria API。这两者提供了与数据库交互的抽象层,使得开发者能够以面向对象的方式编写查询。源码解析将揭示它们如何转换为...

    Hibernate 手册中文版chm格式

    3. 查询语言(HQL):Hibernate 提供了自己的SQL方言——HQL,用于更面向对象的查询。手册会展示如何编写HQL查询,包括基本查询、条件查询、分组和排序等。 4. Criteria查询:提供了一种基于对象的查询方式,比HQL...

    深入浅出Hibernate中文版 part1

    第6章 Hibernate 实战——创建RedSaga论坛 6.1 目标 6.2 E-R建模还是对象建模 6.3 E-R建模及工具集 6.4 对象建模 6.5 项目的目录组织和基础设施 6.6 测试优先 6.7 容器,session与事务 6.8 ...

    struts2+hibernate整合的例子——新闻管理系统

    此外,为了实现模糊查找功能,可能使用了HQL(Hibernate Query Language)或者SQL的LIKE语句,结合标题和日期字段进行查询。 在新闻管理系统的实现过程中,可能会有以下关键步骤: 1. **环境配置**:首先,需要在...

    Hibernate3.6.5 Final Core

    Hibernate提供了自己的SQL方言——HQL(Hibernate Query Language),它是面向对象的查询语言,允许开发者以类和对象的方式进行查询。另外,Criteria API提供了一种更加动态和类型安全的方式来构建查询,避免了SQL...

Global site tag (gtag.js) - Google Analytics