`
rebecca
  • 浏览: 315330 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

setMaxResults()与uniqueResult()

阅读更多

•setMaxResults 是用来配合数据库生成sql的,在sql里就控制查询的记录数目。

 

 

o = query.setMaxResults(1).uniqueResult();

 

uniqueResult();
hibernate的参考手册,query接口提供了一个更好的方法用来获取实例,当返回的实例明确只有一个或者为null的时候。
这个方法是这样用的
当你能够肯定你的数据库中根据你的查询条件只会返回唯一结果,就可以用这个方法!
否则就用list();
其返回类型为Object
可根据你的实际类型强转! 

如果是result则是list类型 


(下面的z,更好的理解它)

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

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对应的使用方法如下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();}





如果查询结果有多个值则抛出错误;

如果查询结果有且只有一个值,返回一个object;

如果没值,返回null


分享到:
评论

相关推荐

    hibernate + extremetable 实现分页

    long totalCount = session.createCriteria(User.class).setProjection(Projections.rowCount()).uniqueResult(); return new JSONObject() .put("total", (totalCount / pageSize) + (totalCount % pageSize > ...

    hql criteria分页

    int totalRecord = Integer.valueOf(c.uniqueResult().toString()); // 恢复原始查询设置 c.setProjection(null); // 设置分页参数 c.setFirstResult((pageSize) * (currentPage - 1)); c.setMaxResults...

    Hibernate中,利用Criteria查询容器实现sql的写法

    3. 分页查询:如果需要进行分页查询,可以使用setFirstResult(int firstResult)设置起始位置,setMaxResults(int maxResults)设置最大结果数。 ```java criteria.setFirstResult(0); // 第一页 criteria....

    hibernate 分页

    与`Criteria` API类似,我们也可以使用`setFirstResult`和`setMaxResults`方法来实现分页。例如,如果我们有一个名为`getUserByPage`的HQL查询: ```java Session session = sessionFactory.openSession(); ...

    用户Hibernate实现的一个分页

    int totalRecords = ((Number) countCriteria.uniqueResult()).intValue(); // 创建Page对象并返回 Page<User> page = new Page(); page.setCurrentPage(pageNum); page.setPageSize(pageSize); page....

    hibernate_first6项目源码

    这个项目提供了一个很好的学习平台,通过查看源代码,你可以了解到如何在实际项目中灵活运用Criteria查询,以及如何与其他Hibernate功能(如事务管理、实体持久化等)结合使用。对于想要深入理解Hibernate和ORM技术...

    Hql详解[文].pdf

    - Hibernate提供`setFirstResult(int firstResult)`和`setMaxResults(int maxResults)`方法进行分页,如`Query query = session.createQuery(hql).setFirstResult(1).setMaxResults(2);` 5. **聚集函数** - Hql...

    HIbernate与oracle数据库应用例子

    - `Session.createQuery()`或`Session.createCriteria()`构建查询,返回Query或Criteria对象,然后调用`list()`或`uniqueResult()`获取结果。 4. 删除数据 - `Session.delete()`删除实体。 五、事务管理 - ...

    Hibernate-api Hibernate文档

    - SetMaxResults() & SetFirstResult():分页查询。 - List() & UniqueResult():执行查询并获取结果。 八、Caching Hibernate支持二级缓存,提高性能。可使用第三方缓存提供商如 EhCache 或 Infinispan。 九、...

    Hibernate分页显示和添加

    Hibernate通过XML配置文件或注解来定义对象与数据库表之间的映射关系。这些映射使得开发者可以用Java对象的方式来操作数据库,减少了对SQL的直接依赖。 对于分页显示,我们通常需要使用`Criteria`、`Query`接口或者...

    使用框架分页

    Long totalCount = (Long) countCriteria.setProjection(Projections.rowCount()).uniqueResult(); // 封装到Page对象 Page<User> page = new Page(userList, pageNo, pageSize, totalCount); // 提交事务 tx...

    Hibernate分页

    HQL是Hibernate提供的一种面向对象的查询语言,它的语法与SQL类似,但它是基于对象和类的。通过HQL,我们可以直接操作对象,而无需关心底层的数据库表结构。例如,如果我们有一个`Student`实体类,对应的数据库表...

    Hiberbate增删改查(分页)的例子简单的

    Hibernate 是一个强大的 Java ORM(对象关系映射)框架,它允许开发者将数据库操作与 Java 对象进行关联,简化了数据库编程。在这个“Hibernate 增删改查(分页)的例子简单”的主题中,我们将深入探讨如何使用 ...

    Hibernate中分页查询的封装。

    int totalCount = ((Number) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); criteria.setFirstResult(pageIndex * pageSize); criteria.setMaxResults(pageSize); List<T> ...

    Hibernate-HQL.rar_HQL_hibernate hql

    4. 分页查询:使用setFirstResult和setMaxResults方法实现分页,如“query.setFirstResult(0).setMaxResults(10)”。 5. 参数化查询:避免SQL注入,提高代码复用,如“SELECT u FROM User u WHERE u.name=:name”,...

    java分页技术汇总

    开发者需要定义一个Action类来处理与分页相关的业务逻辑,并将分页后的数据传递给JSP页面展示。 ##### 3.2 Struts分页示例 在Struts中实现分页需要定义Action类来处理请求并返回分页后的数据: ```java public ...

    java实现数据库增删查功能

    .setParameter("username", username).uniqueResult(); ``` #### 分页查询 分页查询是一种常见的优化技术,它可以提高用户体验并减少服务器资源消耗。在`getPartAdmin`方法中,实现了基于HQL的分页查询: ```java...

    hibernate的使用

    6. 执行查询:最后,通过list()或uniqueResult()方法执行查询。前者返回List集合,后者返回单个结果。 ```java List<User> userList = criteria.list(); ``` 综上所述,Hibernate的Criteria查询提供了丰富的功能,...

    struts2分页更容易简单很快学会

    totalCount = ((Long) countQuery.uniqueResult()).intValue(); totalPage = (totalCount + pageSize - 1) / pageSize; ``` 3. **设置Action属性**:在获取到数据和分页信息后,我们需要设置Action类的属性,如`...

    QBC的使用全集大全

    5. **执行查询**:最后,通过Criteria对象的list()或uniqueResult()方法执行查询,前者返回结果列表,后者返回唯一的结果。 ### QBC的高级特性 - **关联查询**:Criteria API支持一对一、一对多、多对一、多对多的...

Global site tag (gtag.js) - Google Analytics