⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pagedohibernateimpl.java

📁 一个简单的在线机票购买平台
💻 JAVA
字号:
package bit.jeffy.util;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;

import bit.jeffy.bean.PageBean;

public class PageDoHibernateImpl implements HibernateCallback {
	protected final Log log = LogFactory.getLog(getClass());

	private PageBean page = null;

	private Class clazz = null;

	public PageDoHibernateImpl(PageBean page) {
		page = page;

	}

	public PageDoHibernateImpl(Class clazz, PageBean page) {
		page = page;
		this.clazz = clazz;

	}

	/*
	 * (非 Javadoc)
	 * 
	 * @see org.springframework.orm.hibernate3.HibernateCallback#doInHibernate(org.hibernate.Session)
	 */
	public Object doInHibernate(Session session) throws HibernateException,
			SQLException {
		StringBuffer buffer = new StringBuffer();
		buffer.setLength(0);
 
		if (page.getQueryString() != null
				&& !"".equals(page.getQueryString().trim()))
			if (page.getQueryString().trim().startsWith("order"))
				buffer.append(" where 1=1 ").append(page.getQueryString());
			else
				buffer.append(" where ").append(page.getQueryString());
		Query query = null;
		Object values[] = page.getValues();
		List list;
		String queryString = buffer.toString();
		if (!page.isNeedSplitPage()) {
			query = session.createQuery(queryString);

			if (queryString.indexOf('?') > 0 && values != null) {
				for (int i = 0; i < values.length; i++)
					query.setParameter(i, values[i]);

			}
			list = query.list();
			return list;
		}

		if (page.getRecordsPerPage() > 0) {

			String queryStr = "";

			if (queryString.toLowerCase().indexOf("order") != -1) {
				queryStr = "select count(*) "
						+ queryString.substring(0, queryString.toLowerCase()
								.indexOf("order"));

			} else {
				queryStr = "select count(*) " + queryString;
			}

			int totalRecord = getTotalRecoreds(session, queryStr, values);
			page.setTotalRecords(totalRecord);
			int totalPage = 1;

			totalPage = totalRecord % page.getRecordsPerPage() != 0 ? totalRecord
					/ page.getRecordsPerPage() + 1
					: totalRecord / page.getRecordsPerPage();

			page.setTotalPage(totalPage);
			if (page.getCurrentPage() > totalPage)
				page.setCurrentPage(totalPage);
		} else {
			page.setTotalPage(1);
			page.setCurrentPage(1);
		}

		query = session.createQuery(queryString);

		if (queryString.indexOf('?') > 0 && values != null) {
			for (int i = 0; i < values.length; i++)
				query.setParameter(i, values[i]);
		}
		if (page.getRecordsPerPage() > 0) {

			query.setFirstResult((page.getCurrentPage() - 1)
					* page.getRecordsPerPage());
			query.setMaxResults(page.getRecordsPerPage());

		}
		list = query.list();
		if (page.getRecordsPerPage() < 0)
			page.setTotalRecords(list.size());
		return list;
	}

	/*
	 * 
	 */
	private int getTotalRecoreds(Session session, String str, Object obj[]) {

		String sql = str;
		Object values[] = obj;
		Query query = session.createQuery(sql);
		if (sql.indexOf('?') > 0 && values != null) {
			for (int i = 0; i < values.length; i++)
				query.setParameter(i, values[i]);

		}
		Integer totalRecord = (Integer) query.list().get(0);
		return totalRecord.intValue();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -