•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
分享到:
相关推荐
long totalCount = session.createCriteria(User.class).setProjection(Projections.rowCount()).uniqueResult(); return new JSONObject() .put("total", (totalCount / pageSize) + (totalCount % pageSize > ...
int totalRecord = Integer.valueOf(c.uniqueResult().toString()); // 恢复原始查询设置 c.setProjection(null); // 设置分页参数 c.setFirstResult((pageSize) * (currentPage - 1)); c.setMaxResults...
3. 分页查询:如果需要进行分页查询,可以使用setFirstResult(int firstResult)设置起始位置,setMaxResults(int maxResults)设置最大结果数。 ```java criteria.setFirstResult(0); // 第一页 criteria....
与`Criteria` API类似,我们也可以使用`setFirstResult`和`setMaxResults`方法来实现分页。例如,如果我们有一个名为`getUserByPage`的HQL查询: ```java Session session = sessionFactory.openSession(); ...
int totalRecords = ((Number) countCriteria.uniqueResult()).intValue(); // 创建Page对象并返回 Page<User> page = new Page(); page.setCurrentPage(pageNum); page.setPageSize(pageSize); page....
这个项目提供了一个很好的学习平台,通过查看源代码,你可以了解到如何在实际项目中灵活运用Criteria查询,以及如何与其他Hibernate功能(如事务管理、实体持久化等)结合使用。对于想要深入理解Hibernate和ORM技术...
- Hibernate提供`setFirstResult(int firstResult)`和`setMaxResults(int maxResults)`方法进行分页,如`Query query = session.createQuery(hql).setFirstResult(1).setMaxResults(2);` 5. **聚集函数** - Hql...
- `Session.createQuery()`或`Session.createCriteria()`构建查询,返回Query或Criteria对象,然后调用`list()`或`uniqueResult()`获取结果。 4. 删除数据 - `Session.delete()`删除实体。 五、事务管理 - ...
- SetMaxResults() & SetFirstResult():分页查询。 - List() & UniqueResult():执行查询并获取结果。 八、Caching Hibernate支持二级缓存,提高性能。可使用第三方缓存提供商如 EhCache 或 Infinispan。 九、...
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...
HQL是Hibernate提供的一种面向对象的查询语言,它的语法与SQL类似,但它是基于对象和类的。通过HQL,我们可以直接操作对象,而无需关心底层的数据库表结构。例如,如果我们有一个`Student`实体类,对应的数据库表...
Hibernate 是一个强大的 Java ORM(对象关系映射)框架,它允许开发者将数据库操作与 Java 对象进行关联,简化了数据库编程。在这个“Hibernate 增删改查(分页)的例子简单”的主题中,我们将深入探讨如何使用 ...
int totalCount = ((Number) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); criteria.setFirstResult(pageIndex * pageSize); criteria.setMaxResults(pageSize); List<T> ...
4. 分页查询:使用setFirstResult和setMaxResults方法实现分页,如“query.setFirstResult(0).setMaxResults(10)”。 5. 参数化查询:避免SQL注入,提高代码复用,如“SELECT u FROM User u WHERE u.name=:name”,...
开发者需要定义一个Action类来处理与分页相关的业务逻辑,并将分页后的数据传递给JSP页面展示。 ##### 3.2 Struts分页示例 在Struts中实现分页需要定义Action类来处理请求并返回分页后的数据: ```java public ...
.setParameter("username", username).uniqueResult(); ``` #### 分页查询 分页查询是一种常见的优化技术,它可以提高用户体验并减少服务器资源消耗。在`getPartAdmin`方法中,实现了基于HQL的分页查询: ```java...
6. 执行查询:最后,通过list()或uniqueResult()方法执行查询。前者返回List集合,后者返回单个结果。 ```java List<User> userList = criteria.list(); ``` 综上所述,Hibernate的Criteria查询提供了丰富的功能,...
totalCount = ((Long) countQuery.uniqueResult()).intValue(); totalPage = (totalCount + pageSize - 1) / pageSize; ``` 3. **设置Action属性**:在获取到数据和分页信息后,我们需要设置Action类的属性,如`...
5. **执行查询**:最后,通过Criteria对象的list()或uniqueResult()方法执行查询,前者返回结果列表,后者返回唯一的结果。 ### QBC的高级特性 - **关联查询**:Criteria API支持一对一、一对多、多对一、多对多的...