1。 我想用这种形式的 应该也可以达到分页效果
不知道性能怎么样 return (List) getHibernateTemplate().find(
"from food where Cate=? and Category=? ",
new String[] { Cate ,Category}).subList(Start, end);
这个不知道是不是将有所记录查找出来 然后再取 subList(Start, end);
如果是这样那性能应该不高。2。另一个是使用这种形式的
final String hql = "from PublicMessageTable where publicMessageColumnId=? order by pubDate desc";
List listTable = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setInteger(0, publicMessageColumnId.intValue());
query.setFirstResult(start);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return listTable;
}不知道他们有什么区别, 请高人帮看看 谢谢
希望能详细的说一下 再次感谢各位i
不知道性能怎么样 return (List) getHibernateTemplate().find(
"from food where Cate=? and Category=? ",
new String[] { Cate ,Category}).subList(Start, end);
这个不知道是不是将有所记录查找出来 然后再取 subList(Start, end);
如果是这样那性能应该不高。2。另一个是使用这种形式的
final String hql = "from PublicMessageTable where publicMessageColumnId=? order by pubDate desc";
List listTable = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setInteger(0, publicMessageColumnId.intValue());
query.setFirstResult(start);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return listTable;
}不知道他们有什么区别, 请高人帮看看 谢谢
希望能详细的说一下 再次感谢各位i
解决方案 »
- sql语句
- java FTPClient下载的疑难问题
- 用js动态为struts1.2<html:form action="">里的action属性赋值
- HibernateTemplate,Session ,延时加载相关问题
- 多个hidden名字相同,action如何得到一个数组啊
- 如何创建一个Windows后台服务
- 求助:有谁能解决下列这些问题,最近参加培训考试急用,谢谢
- ldap的问题?
- ●●●JNDI连接数据库竟然出现这样的错误,晕啊●●●
- 怎么把weblogic用向导创建的域删掉,重新配置
- 求救:代码看不懂
- java.lang.ClassNotFoundException: org.logicalcobwebs.proxool.ProxoolDataSource
还不如
return (List) getHibernateTemplate().find(
"from food where Cate=? and Category=? ",
new String[] { Cate ,Category})
一次取出所有结果,传到前台,使用前台分页(jquery或者其他技术),这样翻页也不会再跑到后台去执行查询,性能上会有很大提高,用户感觉也比较好。第二种:正规传统做法。以下文章可参阅
http://www.javaeye.com/topic/261
/**
* 使用hql 语句进行分页查询操作
* @param hql 需要查询的hql语句
* @param offset 第一条记录索引
* @param pageSize 每页需要显示的记录数
* @return 当前页的所有记录
*/
@SuppressWarnings("unchecked")
public List findByPage(final String hql,
final int offset, final int pageSize)
{ List list = getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
List result = session.createQuery(hql)
.setFirstResult(offset)
.setMaxResults(pageSize)
.list();
return result;
}
});
return list;
}
/**
* 使用hql 语句进行分页查询操作
* @param hql 需要查询的hql语句
* @param value 如果hql有一个参数需要传入,value就是传入的参数
* @param offset 第一条记录索引
* @param pageSize 每页需要显示的记录数
* @return 当前页的所有记录
*/
@SuppressWarnings("unchecked")
public List findByPage(final String hql , final Object value ,
final int offset, final int pageSize)
{ List list = getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
List result = session.createQuery(hql)
.setParameter(0, value)
.setFirstResult(offset)
.setMaxResults(pageSize)
.list();
return result;
}
});
return list;
}
/**
* 使用hql 语句进行分页查询操作
* @param hql 需要查询的hql语句
* @param values 如果hql有多个个参数需要传入,values就是传入的参数数组
* @param offset 第一条记录索引
* @param pageSize 每页需要显示的记录数
* @return 当前页的所有记录
*/
@SuppressWarnings("unchecked")
public List findByPage(final String hql, final Object[] values,
final int offset, final int pageSize)
{ List list = getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
Query query = session.createQuery(hql);
for (int i = 0 ; i < values.length ; i++)
{
query.setParameter( i, values[i]);
}
List result = query.setFirstResult(offset)
.setMaxResults(pageSize)
.list();
return result;
}
});
return list;
}
}
我用的是你的最后一个方法,但是在 query.setParameter( i, values[i]);
的时候,会报类型转换异常,