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

📄 listinfo.java

📁 博克后台的开发,有很多使用的方法和例子可以提供给大家学习
💻 JAVA
字号:
/*
 * description: 得到符合条件的的记录数组
 * 
 * Created on 2005-7-4
 * @author WuQiaoYun
 * 
 */

package com.common.util;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.SessionFactoryUtils;

import com.res.core.service.ui.component.navbar.PageModel;

/**
 * 得到符合条件的的记录数组,主要是分页组件使用
 * 
 * @author WuQiaoYun
 */
public class ListInfo {

	public ListInfo() {
	}

	/**
	 * @deprecated
	 * 
	 * 用Spring支持的Hibernate方法,使Hibernate对数据库的操作继续瘦身
	 * @param hsql:
	 *            查询语句,如:"from Office as office1 order by office1.officename"
	 * @return: 返回查询结果数组
	 */
	public ArrayList getAllListBySearchCriteria(final Session session,
			final String hsql) {
		// Session session = ht.getSessionFactory().getCurrentSession();
		Query q = session.createQuery(hsql);
		ArrayList list = (ArrayList) q.list();
		session.close();
		return list;
	}

	/**
	 * 用Spring支持的Hibernate方法,使Hibernate对数据库的操作继续瘦身
	 * 
	 * @param hsql:
	 *            查询语句,如:"from Office as office1 order by office1.officename"
	 * @param pageNo:页码
	 * @param page_size:每页的记录数
	 * @return: 返回查询结果当前页码的记录数
	 */
	public List getOfficeBySearchCriteria(final Session session,
			final String hsql, PageModel pagemodel, Object[] values)
			throws DataAccessException {
		// System.out.println("values------------"+values[0]);
		Query q = session.createQuery(hsql);

		if (values != null) {
			for (int i = 0; i < values.length; i++) {
				q.setParameter(i, values[i]);
			}
		}

		// System.out.println("q.getQueryString()===================="+q.getQueryString());
		int size = q.list().size();
		if (pagemodel != null) {		//增加判断为不为空.这样该函数的重用性可以提高,这样是分页还是不分页都可以采用
			int page_size = pagemodel.getPageSize();
			int pageno = pagemodel.getCurrPage();
			if (size <= page_size) {
				q.setMaxResults(size);
				q.setFirstResult(0);
			} else {
				q.setMaxResults(page_size);
				q.setFirstResult((pageno - 1) * page_size);
			}
			pagemodel.setTotalRow(size);
		}
		ArrayList list = (ArrayList) q.list();
		session.close();
		return list;
	}

	/**
	 * 用Spring支持的Hibernate方法,使Hibernate对数据库的操作继续瘦身,相当于重载HibernateTemplate中的find方法,增加了Hibernate分页功能
	 * 
	 * @param HibernateTemplate:spring中封装的HibernateTemplate对象
	 * @param hsql:
	 *            查询语句,如:"from Office as office1 where office1.officename =?"
	 * @param pagemodel:分页信息对象
	 * @param values:参数对象数组,如"new
	 *            Object[]{paramvalue1, paramvalue2}"
	 * @return: 返回查询结果当前页码的记录数
	 */
	public List getOfficeBySearchCriteria(final HibernateTemplate ht,
			final String hsql, final PageModel pagemodel, final Object[] values)
			throws DataAccessException {
		return (List) ht.execute(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException {
				Query queryObject = session.createQuery(hsql);
				prepareQuery(ht, queryObject);
				if (values != null) {
					for (int i = 0; i < values.length; i++) {
						queryObject.setParameter(i, values[i]);
					}
				}
				/*
				 * System.out.println("queryObject.getQueryString()===================="+queryObject.getQueryString());
				 * 
				 * System.out.println("pagesize=============="+pagemodel.getPageSize());
				 * System.out.println("CurrPage=============="+pagemodel.getCurrPage());
				 * System.out.println("pageno=============="+pagemodel.getPageNo());
				 */
				// 采用Hibernate实现分页功能
				ScrollableResults scrollableResults = queryObject.scroll();
				// get the total elements number
				scrollableResults.last();
				int size = scrollableResults.getRowNumber() + 1;
				int page_size = pagemodel.getPageSize();
				int pageno = pagemodel.getCurrPage();
				// int pageno = 1;
				pagemodel.setTotalRow(size);
				if (Integer.MAX_VALUE == pageno
						|| pageno > pagemodel.getPageCount()) // last page
				{
					pageno = pagemodel.getPageCount();
				}
				if (size <= page_size) {
					queryObject.setFirstResult(0);
					queryObject.setMaxResults(size);
				} else {
					queryObject.setFirstResult((pageno - 1) * page_size);
					queryObject.setMaxResults(page_size);
				}
				// System.out.println("pagemodel==="+pagemodel.hashCode());
				/*
				 * System.out.println("q.setFirstResult====="+(pageno - 1) *
				 * page_size);
				 * //System.out.println("q.setMaxResults====="+page_size);
				 * 
				 * System.out.println("sizer=sessioninfo= ="+size);
				 * System.out.println("page_size= ="+page_size);
				 * System.out.println("pageno==="+pageno);
				 * System.out.println("getPageCount==="+pagemodel.getPageCount());
				 */
				/*
				 * System.out.println("getTotalRow==="+pagemodel.getTotalRow());
				 * System.out.println("pagesize=====2222222========="+pagemodel.getPageSize());
				 * System.out.println("CurrPage=====22222222========="+pagemodel.getCurrPage());
				 * System.out.println("pageno=======222222======="+pagemodel.getPageNo());
				 */

				return queryObject.list();
			}
		}, true);

	}

	/*
	 * 准备给定的SQL查询,应用缓冲、事务超时设置 @param
	 * HibernateTemplate:spring中封装的HibernateTemplate对象 @param queryobject:
	 * Query对象 @return: 返回值为空
	 */
	protected void prepareQuery(HibernateTemplate ht, Query queryObject) {
		if (ht.isCacheQueries()) {
			queryObject.setCacheable(true);
			if (ht.getQueryCacheRegion() != null) {
				queryObject.setCacheRegion(ht.getQueryCacheRegion());
			}
		}
		SessionFactoryUtils.applyTransactionTimeout(queryObject, ht
				.getSessionFactory());
	}

	/**
	 * 用Spring支持的Hibernate方法,使Hibernate对数据库的操作继续瘦身
	 * 
	 * @param hsql:
	 *            查询语句,如:"from Office as office1 order by office1.officename"
	 * @param pageNo:页码
	 * @param page_size:每页的记录数
	 * @return: 返回查询结果当前页码的记录数
	 */
	public List getOfficeBySearchCriteria(final Session session,
			final String hsql, PageModel pagemodel) throws DataAccessException {
		// System.out.println("pm.ListInfo=-------------====="+pagemodel.hashCode());
		// System.out.println("session------------"+session);
		Query q = session.createQuery(hsql);

		// System.out.println("q.getQueryString()===================="+());
		int size = q.list().size();
		int page_size = pagemodel.getPageSize();
		int pageno = pagemodel.getCurrPage();
		// System.out.println("sizer=sessioninfo= ="+size);
		if (size <= page_size) {
			q.setMaxResults(size);
			q.setFirstResult(0);
		} else {
			q.setMaxResults(page_size);
			q.setFirstResult((pageno - 1) * page_size);
		}

		pagemodel.setTotalRow(size);
		ArrayList list = (ArrayList) q.list();
		// list.add(pagemodel);
		session.close();
		return list;
	}

}

⌨️ 快捷键说明

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