Hibernate查询数据的几种方式
/**
* 第一种查询:利用query接口与HQL语句
* 1.如果查询所有字段,则list中的元素为POJO对象
* 2.如果查询若干字段,则list中的元素为对象数组
* 3.如果想返回若干字段的对象,则需要通过 new TUser(username,email)方式
*/
public void query(){
Session session = null;
Query query = null;
String hql = null;
try {
session = HibernateSessionFactory.getSession();
hql="From TUser user where user.suser='admin'";
query = session.createQuery(hql);
List list = query.list();
for (Iterator iter = list.iterator(); iter.hasNext();) {
TUser user = (TUser) iter.next();
System.out.println("----Query---");
System.out.println("-Suser-="+user.getSuser());
System.out.println("-Name--="+user.getName());
System.out.println("-Email-="+user.getEmail());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
}
/**
* 第二种查询:利用criteria接口
*/
public void criteria(){
Session session = null;
Criteria criteria = null;
try {
session = HibernateSessionFactory.getSession();
criteria = session.createCriteria(TUser.class);
criteria.add(Restrictions.isNotNull("suser"));
criteria.add(Restrictions.ilike("name", "%T%"));
criteria.addOrder(Order.desc("nation"));
List list = criteria.list();
for (Iterator iter = list.iterator(); iter.hasNext();) {
TUser user = (TUser) iter.next();
System.out.println("----Criteria---");
System.out.println("-Suser-="+user.getSuser());
System.out.println("-Name--="+user.getName());
System.out.println("-Email-="+user.getEmail());
System.out.println("-Nation="+user.getNation());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
}
/**
* 第三种查询:利用SQLQuery接口,即原生SQL
* 1.如果查询所有字段,要加入标量设置query.addEntity(TUser.class);
* 2.如果查询若干字段,则集合中数据为对象数组
*/
public void nativeSql() {
Session session =null;
Query query = null;
String sql = null;
try {
session = HibernateSessionFactory.getSession();
sql = "select suser,name,email,nation from t_user";
query = session.createQuery(sql);
List list = query.list();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object[] obj = (Object[]) iter.next();
System.out.println("-Suser-="+obj[0]);
System.out.println("-Name--="+obj[1]);
System.out.println("-Email-="+obj[2]);
System.out.println("-Nation="+obj[3]);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
}
/**
* 第四种查询:查询单个对象,注意get和load方法的区别
*/
public void getOrLoad(){
Session session = null;
try {
session = HibernateSessionFactory.getSession();
TUser user = (TUser)session.load(TUser.class, "test1");
System.out.println("-Suser-="+user.getSuser());
System.out.println("-Name--="+user.getName());
System.out.println("-Email-="+user.getEmail());
System.out.println("-Nation="+user.getNation());
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
}
HQL用法及参数的几种使用方法
/**
*按参数位置绑定
*/
public void batchUpdate() {
Session session = null;
Transaction transaction = null;
Query query = null;
String hql ="update TUser set name='阿德' where suser=:user";
try {
session = HibernateSessionFactory.getSession();
transaction =session.beginTransaction();
query = session.createQuery(hql);
query.setString("user", "test9");
int i = query.executeUpdate();
transaction.commit();
System.out.println("--update--"+i);
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
HibernateSessionFactory.closeSession();
}
}
/**
*按参数位置绑定
*/
public void batchDelete() {
Session session = null;
Transaction transaction = null;
Query query = null;
String hql = "delete from t_user suser=:user";
try {
session = HibernateSessionFactory.getSession();
transaction = session.beginTransaction();
query = session.createQuery(hql);
query.setString("user", "test11");
int i = query.executeUpdate();
transaction.commit();
System.out.println("--delete--"+i);
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
HibernateSessionFactory.closeSession();
}
}
/*
*使用setProperties方法
*/
public void queryUsers() {
Session session = null;
Transaction transaction = null;
Query query = null;
String hql =null;
try {
session = HibernateSessionFactory.getSession();
hql = "from TUser where suser=:user";
transaction = session.beginTransaction();
query = session.createQuery(hql);
TUser user = new TUser();
user.setSuser("test1");
query.setProperties(user);
List list = query.list();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object[] obj = (Object[]) iter.next();
System.out.println("-Suser-="+obj[0]);
System.out.println("-Name--="+obj[1]);
System.out.println("-Email-="+obj[2]);
System.out.println("-Nation="+obj[3]);
}
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}finally{
HibernateSessionFactory.closeSession();
}
}
分享到:
相关推荐
根据提供的标题、描述以及部分代码内容,我们可以了解到这段材料主要涉及的是Hibernate框架中的HQL(Hibernate Query Language)查询语言的使用。接下来将详细介绍HQL的相关知识点。 ### HQL概述 HQL是Hibernate...
以上内容涉及了使用 HQL 和 DetachedCriteria 进行查询、参数化查询、执行更新操作以及简单的统计查询等常见的 Hibernate 操作。这些知识点对于理解和掌握 Hibernate 框架的基本使用至关重要,同时也是开发基于 ...
根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...
在Hibernate中,HQL(Hibernate Query Language)是其内置的一种面向对象的查询语言,它是SQL的面向对象版本,用于检索和操作持久化对象。HQL查询的使用极大地提高了开发效率,因为它将数据操作与具体的数据库结构...
本文将深入探讨Hibernate中的几种主要的数据获取方式,包括`Session.get()`与`Session.load()`、`Query.iterator()`与`Query.list()`以及使用HQL(Hibernate Query Language)进行查询。 ### 1. `Session.get()`与`...
HQL (Hibernate Query Language) 是一种面向对象的查询语言,由 Hibernate 官方提供,用于简化数据库查询过程。与传统的 JDBC 方式相比,使用 HQL 进行数据库查询更加便捷、高效且易于维护。 #### 二、HQL 与 SQL ...
本篇文章将详细解析Hibernate中的几种主要查询方式,包括联表查询、分页查询、位置参数查询、占位符查询(冒号查询)以及统计查询,这些都是在实际开发中非常常见的需求。 首先,我们来看**联表查询**。在Hibernate...
综上所述,"Hibernate HQL 结合 velocity"是一种高效的方式,它将数据库查询的强大功能与动态页面生成的灵活性相结合,使开发者能够构建出更加动态、数据驱动的Web应用。在实际开发中,熟练掌握这两项技术的结合使用...
根据返回类型的不同,HQL 查询可以分为以下几种: 1. **单个对象** - 当查询结果预期为单个对象时,可以使用 `uniqueResult()` 方法获取结果。 - 例如,统计用户总数的查询可以这样编写: ```java String hql =...
下面将详细介绍HQL在实际开发中常用的几种用法。 #### 1. 基本查询 - **全表查询**:`String hql = "from User";` 这条语句用于查询User表中的所有记录。 - **条件查询**:如`String hql = "from User where ...
下面将详细介绍几种常见的HQL模糊查询方式。 ### 示例1:使用参数绑定的方式进行模糊查询 ```java // 创建HQL查询语句 String hql = "from Subject as s where s.subname like :name and s.subinfo like :info"; /...
本文将详细介绍 Hibernate 提供的几种查询方式及其应用场景。 #### 二、重要知识点 ##### 1. Session 对象与查询操作 在 Hibernate 中,所有持久化操作都需要通过 Session 对象来完成,包括查询操作。Session ...
4. **查询**:使用Session的createQuery或createSQLQuery方法创建HQL或SQL查询,然后设置参数并执行。 5. **结果处理**:HQL查询返回的结果可以是List对象,其中包含了查询结果对应的Java对象。 总的来说,...
2. **HQL(Hibernate Query Language)**:这是Hibernate提供的一种查询语言,类似于SQL,但更加面向对象。通过HQL,我们可以方便地查询数据库中的记录。 3. **Struts标签库**:Struts提供了一系列自定义的JSP标签...
主要有以下几种方式: 1. **懒加载(Lazy Loading)**:默认情况下,Hibernate采用懒加载策略,即关联的对象不会在初始化时加载,而是在首次访问该关联对象时才加载。这种方式能有效减少内存消耗和提高性能。 2. *...
4. **查询语言**:Hibernate支持多种查询方式,包括HQL(Hibernate Query Language)、Criteria API以及Native SQL。其中HQL是一种面向对象的查询语言,它更加贴近Java开发者的思维方式。 5. **缓存机制**:为了...
在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **Native SQL** 本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、...
基于对象的 HQL 查询是 Hibernate 提供的一种查询方式,它可以根据对象的属性来查询数据库中的数据。例如: ```java Query<Order> query = session.createQuery("from Order", Order.class); List<Order> list = ...
本文主要探讨 Hibernate 的查询体系,包括其核心特性 HQL(Hibernate Query Language),以及如何使用 HQL 进行高效的数据查询。 #### 二、HQL 查询简介 HQL 是 Hibernate 提供的一种面向对象的查询语言,它的语法...
当我们在Hibernate中进行查询时,主要有以下几种方式: 1. **主键查询**:通过`get()`或`load()`方法根据主键获取对象。`get()`方法会立即从数据库中获取数据,而`load()`方法则返回代理对象,直到实际访问属性时才...