是的, java.lang.Object org.springframework.orm.hibernate3.HibernateAccessor org.springframework.orm.hibernate3.HibernateTemplate这类里有个分页的方法的啊 List findByCriteria(DetachedCriteria criteria, int firstResult, int maxResults) Execute a query based on the given Hibernate criteria object. API 上都有的 自己看看吧
public List find(final String hql, final int pageIndex, final int pageSize) { return (List) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) { Query query = session.createQuery(hql); int startIndex = (pageIndex - 1) * pageSize; query.setFirstResult(startIndex); query.setMaxResults(pageSize); Object obj = query.list(); if (obj == null) { obj = new ArrayList(); } return (List) obj; } }); }
你在hibernateTemplate使用其中的callback接口可以拿到session的啊 然后就可以想直接取到session一样写了啊。 public void hibernateUserAdd(){ getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { System.out.println("------------AutoCommit------------"+session.connection().getAutoCommit()); session.connection().setAutoCommit(false); // 保存stu1 User user1 = new User(); user1.setName("ccc");// 在数据库中,name字段不允许为null session.save(user1); return null; } }); }
java.lang.Object
org.springframework.orm.hibernate3.HibernateAccessor
org.springframework.orm.hibernate3.HibernateTemplate这类里有个分页的方法的啊
List findByCriteria(DetachedCriteria criteria, int firstResult, int maxResults)
Execute a query based on the given Hibernate criteria object.
API 上都有的 自己看看吧
public List find(final String hql, final int pageIndex, final int pageSize) {
return (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) {
Query query = session.createQuery(hql);
int startIndex = (pageIndex - 1) * pageSize;
query.setFirstResult(startIndex);
query.setMaxResults(pageSize);
Object obj = query.list();
if (obj == null) {
obj = new ArrayList();
}
return (List) obj;
}
});
}
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
System.out.println("------------AutoCommit------------"+session.connection().getAutoCommit());
session.connection().setAutoCommit(false);
// 保存stu1
User user1 = new User();
user1.setName("ccc");// 在数据库中,name字段不允许为null
session.save(user1);
return null;
}
}); }
* 查询指定HQL语句的分页数据集合
*
* @param hql
* HQL语句
* @param currentPage
* 当前页数号
* @param maxRow
* 最大记录号
* @return 分页数据集合
* @throws Exception
* 抛出异常
*/
@SuppressWarnings("unchecked")
public List<T> findByPage(final String hql, final int currentPage, final int maxRow) {
logger.debug("find by page with hql: " + hql + ", currentPage: " + currentPage
+ ", maxRow: " + maxRow);
try
{
return getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session) throws HibernateException, SQLException
{
Query query = session.createQuery(hql);
query.setFirstResult((currentPage - 1) * maxRow);
query.setMaxResults(maxRow);
return query.list();
}
});
}
catch (RuntimeException re)
{
logger.error("find by page failed,HQL: " + hql, re);
throw re;
}
}
.getCurrentSession().createSQLQuery(sql);
List list = query.setFirstResult((pageNo - 1) * pageSize)
.setMaxResults(pageSize).list();
一样的也可以实现楼主的想法。
Query q=session.createQuery(hql);
q.setFirstResult(offset);
q.setMaxResults(pagesize);
q.list();可以得到一个list
public List find(final String hql, final int pageIndex, final int pageSize)
这方法的变量还得定义成最终类型
还是用自己的解决方案好了
int endset = offset+ pagesize;
if(endset > orgList.size())
{
endset = orgList.size();
}
orgList = orgList.subList(offset, endset);