`
jiaguwen123
  • 浏览: 413586 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate 5种查询方式代码示例

 
阅读更多
package com.cstp.hibernate;

import java.util.List;
import java.util.logging.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;

public class QueryUser {

@SuppressWarnings("unchecked")
public static void main(String[] args) {
     Logger log = Logger.getAnonymousLogger();
   Configuration cfg = new Configuration().configure();//from xml
        SessionFactory factory = cfg.buildSessionFactory();
 
   Session session = factory.openSession();
   log.info("==========1=============");
//=================1========================
   SQLQuery sq = session.createSQLQuery("select * from test");
   List<Object[]> list1 = sq.list();
   //list1 的结构([username,password],[username,password],[username,password],...)
   for(Object[] obj:list1){
    for(Object o:obj){
    log.info(o.toString());
   }
    log.info("************");
   }
   log.info("==========2=============");
//=================2========================
   Criteria ct=session.createCriteria(com.cstp.hibernate.User.class);
   ct.add(Restrictions.eq("username", "chenlong"));
   List<User> list2 = ct.list();
   for(User user:list2){
    log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
   }
   log.info("===========3============");
   //=================3======================== 
   DetachedCriteria dc=DetachedCriteria.forClass(com.cstp.hibernate.User.class);
   dc.add(Restrictions.eq("password", "123"));
   List<User> list3 = dc.getExecutableCriteria(session).list();
   for(User user:list3){
    log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
   }
   log.info("============4===========");
//=================4======================== 
   //Query query = session.createQuery("from User test");
   Query query = session.createQuery("from User");//2种写法都可以
 
   List<User> list4 = query.list();
   for(User user:list4){
    log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
   }
   log.info("============5===========");
//=================5 取得一个已被填充了属性的对象,符合条件的有多条,取第一条========================

   User user = (User) session.load(User.class, new String("402890ac232ba99801232ba999a70001"));
   log.info("username:"+user.getUsername() +"\tpassword:"+ user.getPassword());
}

}
运行结果:

2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ==========1=============
Hibernate: select * from test
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232ba99801232ba999a70001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: chenlong
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:18.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:18.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232ba9e001232ba9e1fb0001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: hww
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:36.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:00:36.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232baa3c01232baa3e250001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: liwei
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 333333
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:01:00.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 12:01:00.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 402890ac232c9eec01232c9eee280001
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: zhu
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 123456
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 16:28:16.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: 2009-08-18 16:28:16.0
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ************
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ==========2=============
Hibernate: select this_.id as id0_0_, this_.username as username0_0_, this_.password as password0_0_, this_.createTime as createTime0_0_, this_.expireTime as expireTime0_0_ from test this_ where this_.username=?
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ===========3============
Hibernate: select this_.id as id0_0_, this_.username as username0_0_, this_.password as password0_0_, this_.createTime as createTime0_0_, this_.expireTime as expireTime0_0_ from test this_ where this_.password=?
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:hww password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ============4===========
Hibernate: select user0_.id as id0_, user0_.username as username0_, user0_.password as password0_, user0_.createTime as createTime0_, user0_.expireTime as expireTime0_ from test user0_
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:hww password:123
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:liwei password:333333
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:zhu password:123456
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: ============5===========
2009-8-18 19:27:28 com.cstp.hibernate.QueryUser main
信息: username:chenlong password:123


1方式:尽管sql语句写法灵活,但是结果显然不好。

2方式,3方式:只能加where限制条件,不能固定自己想查哪些字段,就是select * from 。。。(但是也没影响,不用的字段值放那不用也行)。

4方式:用的HQL语言:sql语句也灵活。

HQL 语法与SQL一致,区别在于:
   1 如果查询一个对象的结果集,可以省略select部分,只用from
   2 from 的内容可以是Mapping配置中的类名也可以是Mapping配置中的表名
   3 使用group by 的时候,select不可以省略
   4 分组查询结果不会映射成对象

5方式:要取得数据库的一条记录作为对象也很不错。
分享到:
评论

相关推荐

    Hibernate查询方式代码示例

    Hibernate Criteria API提供了一种类型安全的方式来构建查询,避免了SQL注入的风险。以下是一个简单的例子: ```java Session session = sessionFactory.openSession(); Transaction tx = session.begin...

    Hibernate学习代码示例

    这个“Hibernate学习代码示例”压缩包文件为初学者提供了丰富的学习资源,帮助他们理解并掌握Hibernate的核心概念和实际应用。 首先,让我们详细探讨一下Hibernate的基础知识。Hibernate是一个开源的ORM框架,它的...

    hibernate-代码学习示例

    【hibernate-代码学习示例】是一个关于Hibernate框架的实战教程,主要针对开发者提供深入理解和使用Hibernate的实例。Hibernate是Java开发中的一个流行对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以更...

    hibernate中的查询方式

    - **命名参数:** 推荐使用命名参数的方式传递值,如上述示例中的`"name"`,这种方式使得代码更具可读性。 - **易于维护:** 由于HQL的面向对象特性,使得它更容易理解和维护。 - **局限性:** HQL只适用于Hibernate...

    Hibernate_使用示例代码

    8. **Criteria API**:另一种查询方式,提供了动态构建查询的能力,无需编写HQL,通过Criteria、DetachedCriteria等对象构建查询条件。 9. ** Criteria与HQL对比**:Criteria API适用于动态查询,而HQL适合静态查询...

    三种查询方式跟踪Hibernate源码

    本文将详细阐述通过三种查询方式跟踪Hibernate源码的方法,帮助开发者更好地掌握其工作原理。 首先,我们来看第一种查询方式:HQL(Hibernate Query Language)查询。HQL是Hibernate专有的SQL方言,允许开发者以...

    hibernate 三种 查询 方式 load与get的区别

    本篇文章将详细解析Hibernate中的三种主要查询方式——HQL(Hibernate Query Language)、Criteria API和Query API,并着重讨论`load()`与`get()`方法的区别。 一、HQL查询 Hibernate Query Language(HQL)是...

    Hibernate实例代码

    Hibernate 是一个开源的ORM框架,它将Java类与数据库表关联,通过对象的方式来处理数据库的CRUD(创建、读取、更新、删除)操作。它消除了Java应用程序与数据库之间的直接交互,降低了开发难度,提高了代码的可读性...

    Hibernate的使用例子代码

    在"Hibernate的使用例子代码"中,我们可以看到一个基础的示例,它将引导我们了解如何配置和使用Hibernate。下面将详细解释这个过程: 1. **配置Hibernate**: 使用Hibernate 首先需要在项目中引入Hibernate的依赖库...

    Hibernate3.x简单配置示例

    Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用面向对象的方式来操作数据库。在Hibernate3.x版本中,它提供了更为完善的对象模型支持、更丰富的查询...

    hibernate查询代码

    最后,`hibernate查询`这个压缩包可能包含了一些示例代码和配置文件,用于演示如何在Java项目中实现上述查询方式。通过分析这些文件,你可以更好地理解Hibernate查询的工作原理,并将其应用到自己的项目中。 总之,...

    hibernate多表联合查询

    在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **Native SQL** 本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、...

    一个很好的struts+hibernate源代码示例

    通过分析和学习这个源代码示例,开发者可以深入理解这两者之间的协同工作方式,从而提升自己的开发技能。这个例子不仅可以帮助初学者快速上手,也为有经验的开发者提供了一个参考模板,便于他们在项目中快速搭建类似...

    hibernate主键一对一关联映射代码示例

    在Java的持久化框架Hibernate中,一对一(OneToOne)关联映射是一种常见的关系映射方式,用于表示两个实体之间一对一的关联关系。本示例将深入讲解如何在Hibernate中实现主键一对一关联映射,并通过代码示例进行解析...

    Hibernate开发实战源代码

    在【描述】中提到,这个实战项目提供了实际的代码示例,这些示例已经过测试,确保可以正确运行。这意味着开发者可以下载并运行这些代码,以深入理解Hibernate的工作原理及其在实际开发中的应用。 【标签】...

    hibernate+ehcache代码示例

    `HibernateDemo1.zip`可能包含了一些使用Hibernate进行数据库操作的示例代码,如CRUD(创建、读取、更新、删除)操作,事务管理,以及HQL(Hibernate查询语言)的使用。 **Ehcache** 是一个高性能的、内存级别的...

    hibernate完整小示例

    "hibernate完整小示例"是一个基础的教程,涵盖了配置、实体类、持久化操作和查询等关键点。通过这个示例,开发者能够快速上手Hibernate,了解如何在Java项目中利用其强大功能进行数据库操作。不过,要完全掌握...

    Hibernate示例

    &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQL5Dialect &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt; &lt;property name="hibernate.connection.url"&gt;...

    hibernate5官方文档样例代码包括配置与注解两个方案

    在Hibernate5中,它提供了两种主要的实体管理方式:传统的XML配置和更现代的注解方式。本压缩包文件“hibernate5官方文档样例代码”涵盖了这两种方法,帮助开发者深入理解Hibernate的工作原理。 **配置方案** 在...

    六种方式实现hibernate查询

    示例查询是一种简单的查询方式,使用Hibernate的Session对象直接执行SQL语句。示例代码: ```java static void query(String name){ Session s=null; try{ s=HibernateUtil.getSession(); String sql="select * ...

Global site tag (gtag.js) - Google Analytics