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

📄 daoimpl.java

📁 这是一个用java三层框架做的ISS学员管理系统
💻 JAVA
字号:
package org.pontifex.orm.hibernate3;

import org.pontifex.orm.hibernate3.PageInfoQueryCallback.PageInfoBuffer;
import org.pontifex.web.mapping.PageInfo;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Projections;



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


/**
 * Created by IntelliJ IDEA.<br>
 * User: Songzou<br>
 * Date: 2007-4-8<br>
 * Time: 11:37:07<br>
 *
 *  公共dao实现类 主要解决分页查询
 */
public abstract class DaoImpl 
	implements Dao{

	private HibernateTemplate hibernateTemplate ;
	
	protected final HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

	public final void setSessionFactory(SessionFactory sessionFactory) {
		  this.hibernateTemplate = new HibernateTemplate(sessionFactory);
	}
	
	/**
	 * 分页查询Criteria-----缺点对左外连接支持太差
	 */
	public PageInfo pageInfoLookup(final PageInfo pageinfo , final PageInfoCriteriaCallback callback) {
		return (PageInfo)hibernateTemplate.execute(new HibernateCallback(){

			public Object doInHibernate(Session session) throws HibernateException, SQLException {
				Criteria criteria = callback.doInPageInfo(session);	//根据传回
				int count = (Integer)criteria.setProjection(Projections.rowCount()).uniqueResult();
				pageinfo.setTotalRows(count);
				List list = null;
				if(pageinfo.isShowPages()){
					list = criteria.setProjection(null).setFirstResult(pageinfo.getStartIndex()).setMaxResults(pageinfo.getPerPageRows()).list();
				}else{
					list = criteria.setProjection(null).list();
				}
				pageinfo.setPageList(list);
				return pageinfo;
			}
			
		});
	}
	
	/**
	 * 分页查询Query -- 缺点复杂
	 * 强烈建议使用该分页查询实现
	 * 
	 * 
	 * 
	 */
	public PageInfo pageInfoLookup(final PageInfo pageinfo , final PageInfoQueryCallback callback){
		return (PageInfo) hibernateTemplate.execute(new HibernateCallback(){
			public Object doInHibernate(Session session) throws HibernateException, SQLException {
				
				
				PageInfoBuffer hql_temp = new PageInfoBuffer.PageInfoBufferImpl();
				callback.doInPageInfoString(hql_temp);
				
				
				
				String hql = hql_temp.toString() ;
				//System.out.println(hql);
				int index = hql.indexOf("from");
				if(index==-1)throw new HibernateException("The hql is not right ");
		        String selectHql = hql.substring(index); 
		        selectHql = "select count(*) "+selectHql;
		        
//		        System.out.println(selectHql);
		        Query query1 = session.createQuery(selectHql);
		        Query query = session.createQuery(hql);
		        PageInfoQueryCallback.PageInfoMapValues values = new PageInfoQueryCallback.PageInfoMapValues(); 
		        
		        callback.doInPageInfoValues(values);
		        
		        values.setParameterValue(query);
		        values.setParameterValue(query1);
		        int count = (Integer)query1.uniqueResult();
		    	pageinfo.setTotalRows(count);
		    	List list = null;
		    	if(pageinfo.isShowPages()){
		    		list = query.setFirstResult(pageinfo.getStartIndex()).setMaxResults(pageinfo.getPerPageRows()).list();
		    	}else{
		    		list = query.list();
		    	}
		    	pageinfo.setPageList(list);
				return pageinfo;
			}
		});
	}
	
}

⌨️ 快捷键说明

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