此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【kobe21】截止到2008-07-09 13:45:07的历史汇总数据(不包括此帖):
发帖的总数量:8 发帖的总分数:190 每贴平均分数:23
回帖的总数量:6 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:40
无满意结贴数:0 无满意结贴分:0
未结的帖子数:7 未结的总分数:150
结贴的百分比:12.50 % 结分的百分比:21.05 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
楼主【kobe21】截止到2008-07-09 13:45:07的历史汇总数据(不包括此帖):
发帖的总数量:8 发帖的总分数:190 每贴平均分数:23
回帖的总数量:6 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:40
无满意结贴数:0 无满意结贴分:0
未结的帖子数:7 未结的总分数:150
结贴的百分比:12.50 % 结分的百分比:21.05 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
query.setMaxResults(maxResults); 这两行上,只要有这两行就会报错!这是怎么回事啊?
看看我的
package com.oy.financing.dao.hibernate;import java.sql.SQLException;
import java.util.List;
import java.util.regex.Pattern;import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.oy.financing.dao.PaginationDao;
import com.oy.financing.other.Pager;public class PaginationDaoHibernate extends HibernateDaoSupport implements PaginationDao {
private int pageSize = 30; // 页面的记录数
private int pageNumber = 1; // 当前页面数
private int maxPages; // 最大的页面数
private int maxElements; // 最大记录数
private String sql; // 查询的记录
@Override
public void initQuery(Pager page) {
// TODO Auto-generated method stub
this.sql=page.getSql();
init();
this.setPageSize(page.getPageSize());
this.setPageNumber(page.getPageNumber());
}
private void init() {
//System.out.println("注意:init()");
setMaxElements();
setMaxPages();
} private void setMaxElements() {
String regex = "select((.)+)from";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
String[] s = p.split(this.sql);
String newSql = "select count(*) from" + s[1];
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Transaction tr=session.beginTransaction();
int count = (Integer)session.createQuery(newSql).uniqueResult();
tr.commit();
session.close();
this.maxElements=count;
} public void setMaxPages() {
//System.out.println("注意:setMaxPages()"+"pageSize\t"+pageSize+"\tpageNumber\t"+pageNumber);
if (this.getMaxElements() != 0 && (this.getMaxElements() % this.getPageSize() == 0)) {
this.maxPages = this.getMaxElements() / this.getPageSize();
} else {
maxPages = this.getMaxElements() / this.getPageSize() + 1;
} } private String sqlModify(String source) {
String regex = "select((.)+)from";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
String[] s = p.split(this.sql);
String newSql = "from "+s[1];
return newSql;
} private int getBeginElement() {
return (this.pageNumber - 1) * this.pageSize + 1;
}
private int getEndElement() {
int endElement = this.pageNumber * this.pageSize;
if (endElement >= this.maxElements) {
return this.maxElements;
}
return endElement;
} @SuppressWarnings("unchecked")
@Override
public List<Object> getList() {
this.sql=this.sqlModify(this.sql);
//System.out.println("注意:public List<Object> getList()"+this.sql);
// 折行代码
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery(PaginationDaoHibernate.this.sql);
query.setFirstResult(PaginationDaoHibernate.this.getBeginElement()); // hibernate分页的精髓 呵呵
query.setMaxResults(PaginationDaoHibernate.this.pageSize);
return query.list();
}
});
@Override
public int getMaxElements() {
return this.maxElements;
} @Override
public int getMaxPages() {
return maxPages;
} @Override
public int getNext() {
if (pageNumber + 1 >= this.getMaxPages()) {
return this.getMaxPages();
}
return pageNumber + 1;
} @Override
public int getPageNumber() {
return this.pageNumber;
} @Override
public int getPageSize() {
return this.pageSize;
} @Override
public int getPrevious() {
if (pageNumber - 1 <= 1) {
return 1;
}
return this.pageNumber - 1;
} @Override
public boolean hasNext() {
return pageNumber < this.getMaxPages();
} @Override
public boolean hasPrevious() {
return this.pageNumber > 1;
} @Override
public boolean isFirst() {
return pageNumber == 1;
} @Override
public boolean isLast() {
return this.pageNumber >= this.getMaxPages();
} @Override
public void setPageNumber(int pageNumber) {
if (pageNumber > maxPages) {
this.pageNumber = maxPages;
} else if (pageNumber < 1) {
this.pageNumber = 1;
} else {
this.pageNumber = pageNumber;
}
}
@Override
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
} @Override
public void QueryByTime(String sql, int pageSize, int pageNumber) {
// TODO Auto-generated method stub
}
}