获得条数:由于初次在hibernate中用distinct 先写个简单的sql试试。ok的。
public int getSendCount(final String userid) {
String sql = "select count( distinct t.ctid) from t_send t where t.userid='"
+ userid + "'";
int result = 0;
try {
result = Integer.parseInt(String.valueOf(getHibernateTemplate()
.getSessionFactory().getCurrentSession()
.createSQLQuery(sql).uniqueResult()));//这块我再想session是否关闭的问题
} catch (RuntimeException re) {
result = 0;
}
return result;
}
获得list分页:
public List<?> findSendList(final String userid, final int startPoint,
final int recordPerPage) {
List instances = (List) getHibernateTemplate().executeFind(
new HibernateCallback() {
/*
* 重载方法:@see
* org.springframework.orm.hibernate3.HibernateCallback
* #doInHibernate(org.hibernate.Session)
* 方法描述:(这里用一句话描述这个方法的作用) 适用条件:(这里描述这个方法适用条件 – 可选)
*
* @param session
*
* @return
*
* @throws HibernateException
*/
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = session.createCriteria(TSend.class);
if (StringUtils.isNotEmpty(userid)) {
criteria.add(Restrictions.eq("userid", userid));
}
ProjectionList projectionList = Projections
.projectionList();
projectionList.add(Projections.property("contentid"));
projectionList.add(Projections.property("ctid"));
criteria.setProjection(Projections
.distinct(projectionList));
criteria.setFirstResult(startPoint);
criteria.setMaxResults(recordPerPage);
List list = criteria.list();
List result = new ArrayList();
if (list != null && list.size() > 0) {
Iterator it = list.iterator();
while (it.hasNext()) {
Object[] obj = (Object[]) it.next();
TSend tSend = new TSend();
tSend.setContentid(obj[0] + "");
tSend.setCtid(obj[1] + "");
if ("1".equals(tSend.getCtid())) {
Criteria criteriaInfolist = session
.createCriteria(TTest.class);
criteriaInfolist.add(Restrictions.eq(
"infoid", tSend.getContentid()));
criteriaInfolist.add(Restrictions.eq(
"ctid", tSend.getCtid()));
TTest tTest = (TTest) criteriaInfolist
.uniqueResult();
tSend.settTest(tTest );
}
result.add(tSend);
}
}
return result;
}
});
if (instances == null) {
instances = new ArrayList();
}
return instances;
}
分享到:
相关推荐
有时候,我们可能只关心结果集的一部分,例如分页显示数据。Hibernate提供了`setMaxResults()`和`setFirstResult()`两个方法来帮助实现这一功能。 **示例代码**: ```java Criteria criteria = session....
- **使用分页查询**:通过 `setMaxResults()` 和 `setFirstResult()` 方法来实现。 - **避免使用 `DISTINCT` 关键字**:除非必要,因为这可能会导致性能下降。 - **合理使用缓存**:Hibernate支持二级缓存,可以有效...
- **SQL优化**:使用`DISTINCT`关键字可以消除查询结果中的重复行,但在大数据量下可能会影响性能。针对分页查询,可以利用`setMaxResults`和`setFirstResult`方法实现高效的分页查询。 #### 3. Struts2的工作原理 ...
在Hibernate中,使用dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)可以去除重复项。 2. HTTP协议及端口、SMTP协议及端口 HTTP(HyperText Transfer Protocol)是一种超文本传输协议,使用80端口。SMTP...
Hibernate 提供了 `Criteria.DISTINCT_ROOT_ENTITY` 结果转换器,用于在查询时去除结果集中的重复实体。在 Criteria 查询中,添加 `dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 可以确保返回的实体...
- **解决方案**: 在Hibernate的Criteria API中,可以通过调用`setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)`方法来去除查询结果中的重复项。这会确保查询结果只包含唯一的根实体对象。 #### 二、HTTP与...
分页查询** - **语法**: `SET FIRST RESULT <起始位置> SET MAX RESULTS <每页数量>` - **示例**: `Query q = session.createQuery("FROM Category c ORDER BY c.name DESC"); q.setMaxResults(3); q....
Hibernate 提供了 `dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 来去除查询结果中的重复实体。这会在查询执行后对结果进行处理,确保返回的根实体是唯一的。 2. **HTTP和SMTP协议及端口**: HTTP...
Hibernate中的Criteria API提供了去除查询结果重复项的方法,`dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);`这行代码会确保返回的结果集中不会有重复的根实体对象。 2. **HTTP与SMTP协议及其端口**:...
Hibernate中的Criteria查询可以通过设置ResultTransformer为DISTINCT_ROOT_ENTITY来去除查询结果中的重复实体。`dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 这一行代码的作用是确保返回的实体结果...
1. **Hibernate离线查询去除重复项**:在Hibernate中,使用Criteria API时,可以设置ResultTransformer为`Criteria.DISTINCT_ROOT_ENTITY`来去除查询结果中的重复实体。 2. **HTTP与SMTP协议及端口**:HTTP是用于...
对于统计操作,Hibernate的`Projections`类提供了多种方法,如`avg()`用于计算平均值,`rowCount()`计算记录数,`count()`统计总数,`max()`获取最大值,`min()`获取最小值,以及`countDistinct()`计算唯一值的数量...
Hibernate 提供了一个方便的方法来去除查询结果中的重复实体,即 `dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);` 这行代码会确保返回的实体结果是唯一的,避免了由于关联查询导致的重复数据。 2. **...
Hibernate框架提供了Criteria接口,可以使用`Criteria.DISTINCT_ROOT_ENTITY`作为结果转换器来去除查询结果中的重复项。 2. HTTP与SMTP协议及其端口: - HTTP(超文本传输协议)默认使用80端口,用于客户端与...
dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) 是 Hibernate 框架中用于去除重复项的方法。Criteria.DISTINCT_ROOT_ENTITY 是一个标记,用于指定结果集的去重方式。在 Hibernate 中,我们可以使用 ...
13. **分页查询**:讨论不同数据库的分页查询方式,如MySQL的LIMIT和OFFSET,Oracle的ROWNUM,SQL Server的TOP和OFFSET-FETCH等,同时注意性能优化,避免全表扫描。 以上是面试中可能会被问到的关键点,每个点都...
#### 一、Hibernate去除重复项 **问题**: 在Hibernate中如何去除查询结果中的重复项? **解决方案**: 使用`Criteria` API中的`setResultTransformer()`方法,并传递`Criteria.DISTINCT_ROOT_ENTITY`参数,可以有效...
在JPA或Hibernate中,我们可以使用`Criteria.DISTINCT_ROOT_ENTITY`作为结果转换器来去除查询结果中的重复根实体。 2. **HTTP和SMTP协议及其端口**:HTTP协议通常运行在端口80上,用于传输网页内容;SMTP(Simple ...
- **解决方案**: 在Hibernate的Criteria API中,可以通过调用`setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)`方法来去除查询结果中的重复项。 #### 二、HTTP与SMTP协议及其端口 - **HTTP**: 超文本传输协议...