`

Query接口的uniqueResult()方法

阅读更多

以前写代码,总免不了编写登陆部分。在获取user的时候,只可能返回一个user实例,或者为null。以前使用以下方法实现。

 

Java代码 复制代码
  1. public User get(String id){   
  2.     Session session=HibernateUtil.getSessionFactory().openSession();   
  3.     String hql="from User u where u.id = ?";   
  4.     List list=session.createQuery(hql).setString(0, id).list();   
  5.     if (list.size()==1){   
  6.         return (User)list.get(0);   
  7.     }else{   
  8.         return null;   
  9.     }   
  10. }  
public User get(String id){
    Session session=HibernateUtil.getSessionFactory().openSession();
    String hql="from User u where u.id = ?";
    List list=session.createQuery(hql).setString(0, id).list();
    if (list.size()==1){
        return (User)list.get(0);
    }else{
        return null;
    }
}

 

昨天重读hibernate的参考手册,发现query接口提供了一个更好的方法用来获取实例,当返回的实例明确只有一个或者为null的时候。

uniqueResult

public Object uniqueResult()throws HibernateException
返回:单个实例或者null
抛出:当返回的实例大于一个的时候的抛出NonUniqueResultException
对应的使用方法如下

 

Java代码 复制代码
  1. public User get(String id){      
  2.         Session session=HibernateUtil.getSessionFactory().openSession();       
  3.         String hql="from User u where u.id=?";       
  4.         return (User)session.createQuery(hql).setString(0,id).uniqueResult();  
public User get(String id){   
        Session session=HibernateUtil.getSessionFactory().openSession();    
        String hql="from User u where u.id=?";    
        return (User)session.createQuery(hql).setString(0,id).uniqueResult();
Java代码 复制代码
  1. }  
分享到:
评论

相关推荐

    Hibernate SQLQuery执行原生SQL.docx

    在Java的Hibernate框架中,有时候我们需要执行自定义的SQL查询以获取特定的数据,这时就可以使用SQLQuery接口。本文将深入探讨Hibernate如何通过SQLQuery接口执行原生SQL查询,并展示如何处理查询结果。 一、创建...

    Hibernate+本地SQL查询SQLQuery.pdf

    在Java的持久化框架Hibernate中,有时我们需要使用原生的SQL查询来实现特定的数据库操作,这时就需要利用到SQLQuery接口。本篇文章将详细解析如何使用Hibernate的SQLQuery来进行本地SQL查询,并探讨其各种应用场景。...

    hibernate执行原生sql语句

    我们也可以使用 `SQLQuery` 对象来执行原生 SQL 语句,该对象提供了多种方法来执行查询,例如 `list()` 方法、`uniqueResult()` 方法等。 例如,我们可以使用以下代码来执行一个原生 SQL 语句: ```java SQLQuery ...

    java-Hibernate 检索

    Query 接口支持方法链编程风格,将上面所有步骤写入一句程序代码中。 四、QBC 检索 QBC 是一种使用 Query By Criteria API 来检索对象的方式,该 API 封装了基于字符串形式的查询语句,提供了更加面向对象的查询...

    Hibernate+本地SQL查询SQLQuery宣贯.pdf

    总之,Hibernate的SQLQuery接口提供了一种灵活的方式来执行原生SQL查询,并将结果映射到Java对象。通过使用别名、结果集映射和命名SQL查询,开发者可以处理复杂的数据库交互,同时保持代码的清晰和整洁。

    hibernate 入门经典实例

    - 执行查询后,调用`Query`对象的`uniqueResult`方法获取单个结果。 #### 实验十六:Query-iterator()方法 **实验目的:** - 掌握`Query`对象的`iterator`方法。 **实验步骤:** - 执行查询后,调用`Query`对象...

    HQL的具体内容和使用

    `或命名参数`:param`实现,然后使用`Query`对象的`setString`、`setInteger`等方法赋值。 联合查询可以使用逗号分隔多个实体,例如`select s.name from Student s, Clazz c where s.clazzId=c.id`。对于分页查询,...

    高效率spring+struts+hibernate分页算法

    return (Long) query.uniqueResult(); } @Override public List getList(PageBean page) throws Exception { Session session = getSessionFactory().getCurrentSession(); Query query = session....

    java后台开发Hibernate例子--登录查询

    User user = query.uniqueResult(); if (user != null) { tx.commit(); return user; } else { tx.rollback(); return null; } } catch (Exception e) { if (tx != null) { tx.rollback(); } e....

    Hibernate 查询体系

    5. **执行查询并处理结果**:最后调用 `Query` 对象的 `list` 或 `uniqueResult` 方法来执行查询,并处理查询结果。 #### 四、HQL 查询示例 以下是一个简单的 HQL 查询示例,用于演示如何使用 HQL 来查询数据: `...

    Hibernate中Criteria的用法详解

    5. 执行查询:最后,调用Criteria的list()或uniqueResult()方法获取结果。 在Spring框架中,HibernateTemplate提供了一种方便的方式来执行DetachedCriteria查询,通过getHibernateTemplate().findByCriteria...

    Hibernate方法的实现

    例如,使用Session的createCriteria()或createQuery()方法,然后添加查询条件,最后调用list()或uniqueResult()获取结果。 6. **缓存机制** Hibernate支持一级缓存(Session级别的)和二级缓存(SessionFactory...

    ssh框架的笔记

    Query接口用于执行HQL(Hibernate Query Language)查询,提供List、uniqueResult、setString、setParameterList等方法。 5. **POJO(Plain Old Java Object)** POJO是与Hibernate关联的Java对象,有瞬时态、...

    QBC的使用全集大全

    **QBC(Query By Example)**是Hibernate框架中的一种查询方式,它允许开发者通过实例对象来构造查询条件,提供了一种更加面向对象的查询方法。QBC查询在处理复杂的动态查询时尤其方便,因为它可以避免编写大量的SQL...

    struts2_spring_hibernate_分页显示.doc

    return ((Long) query.uniqueResult()).intValue(); // 返回总记录数 } } ``` ##### 2. Service 层设计 Service 层负责业务逻辑处理,调用 DAO 层提供的方法。 ```java @Service public class KindEntityService...

    hibernate basedao(泛型版本)

    泛型是Java SE 5.0引入的新特性,它允许在类、接口和方法中使用类型参数,从而实现更强大的类型检查和减少类型转换的冗余。 1. 泛型BaseDAO:`GenericBaseDao.java`和`GenericBaseDaoInter.java` 泛型BaseDAO的主要...

    hibernate帮助手册api大集合

    7. **Query接口**:提供了执行HQL和SQL查询的API,如`createQuery()`, `createSQLQuery()`, `list()`, `uniqueResult()` 等方法。 8. **实体(Entity)**:是Hibernate中代表数据库表的Java类,通常使用`@Entity`...

    Hibernate 练习题

    4. **执行查询**:调用Query对象的list或uniqueResult等方法执行查询并获取结果。 5. **关闭Session**:查询完毕后,确保关闭Session以释放资源。 通过以上详尽的解析,我们可以看出,理解和掌握Hibernate中的关联...

    Java_EE_SSH三大框架知识点

    Dept dept = (Dept) query.uniqueResult(); System.out.println(dept.getDeptDesc()); session.close(); return dept; } ``` 这个示例展示了如何使用HQL进行查询,并获取唯一结果。通过这种方式,可以方便地从...

    hibernate执行外部sql

    5. **执行查询并处理结果**:调用`SQLQuery`对象的`executeUpdate()`方法执行DML语句(INSERT, UPDATE, DELETE),或`list()`、`uniqueResult()`等方法获取查询结果。对于返回的结果集,可以使用Hibernate提供的API...

Global site tag (gtag.js) - Google Analytics