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

📄 basedao.java

📁 客户关系管理系统主要管理新老客户的一些信息并可以发现潜在客户
💻 JAVA
字号:
package com.qrsx.qrsxcrm.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;


/**
 * 泛型,实现了通用方法
 * @author Administrator
 */
public class BaseDAO<T> {
	
	protected Session session = null;
	protected Transaction tx = null;
	protected int pageNum=5;				//每页显示的数据条数pageSize
	
	private Class<T> persistentClass;	//要得到当前泛型的类

	public BaseDAO(Class<T> class1) {
		this.session = HibernateUtil.getSession();
		this.persistentClass = class1;
	}

	public Class<T> getPersistentClass() {
		return persistentClass;
	}

	public void setPersistentClass(Class<T> persistentClass) {
		this.persistentClass = persistentClass;
	}

	// create
	public void create(T t) {
		session.save(t);
	}

	// update
	public void update(T t) {
		session.update(t);
	}

	// delete
	public void delete(T t) {
		session.delete(t);
	}
	/**
	 * 批量删除
	 */
	@SuppressWarnings("unchecked")
	public void batchDelete(  Class< T > clazz , String[] ids)
	{
		T object = null;
		for( int i = 0; i < ids.length; i++ )
		{
			object = ( T )session.get( clazz , ids[i] );
			session.delete( object );
		}
	}

	// findById
	@SuppressWarnings("unchecked")
	public T findById(Class c, String id) {
		T t = (T) session.get(c, id);
		return t;
	}

	//findAll
	@SuppressWarnings("unchecked")
	public List<T> findAll(String hql){
		Query query=session.createQuery(hql);
		
		List<T> list=query.list();
		return list;
	}
	
	// list 动态查询
	@SuppressWarnings("unchecked")
	public List list(T t) {
		// QBC查询
		Example example = Example.create(t);
		example.ignoreCase().enableLike(MatchMode.ANYWHERE);//对查询对象进行忽略大小写的模糊查询,适用于动态查询

		Criteria criteria = session.createCriteria(this.getPersistentClass()).add(example);
		
		List <T> list=criteria.list();
		return list;
	}
	
	
	/**
	 * 带分页的检索方法
	 * @param t
	 * @param i 页码
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List listForPage(Class<T> t,int i){
		
		Criteria criteria1 = session.createCriteria(t);
		int total= criteria1.list().size();  //total 为记录总数
		
		int allPage ; //总页数
		
		Criteria criteria = session.createCriteria(t);
		
		criteria.setFirstResult(i);
		criteria.setMaxResults(pageNum);
		
		//总页数
		if(total %pageNum==0){
			allPage = total/pageNum;
		}else{
			allPage = total/pageNum +1 ;
		}
		
		
		List<T> list = criteria.list();
		list.add((T) (Integer)total); 		//将总记录数存入list
		list.add((T) (Integer)allPage);    //将总页数存入list
		
		return list;
	}
	
	/**
	 * 根据提交的对象属性查询数据(分页)
	 * @param t
	 * @param i       数据的起始位置
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List listForEntity(Class<T> t,int i){
		//QBC查询
		Example example=Example.create(t);
		example.ignoreCase().enableLike(MatchMode.ANYWHERE);
		
		Criteria criteria1 =session.createCriteria(this.getPersistentClass()).add(example);
		
		int total=criteria1.list().size();//总数据数
		int allPage=0;//总页数
		
		Criteria criteria =session.createCriteria(this.getPersistentClass()).add(example);
		criteria.setFirstResult(i);
		criteria.setMaxResults(pageNum);
		
		//计算总页数
		if(total%pageNum==0){
			allPage = total/pageNum;
		}else{
			allPage=total/pageNum+1;
		}
		List<T> list=criteria.list();
		list.add((T)(Integer)total);//在list中加入总数据量
		list.add((T)(Integer)allPage);//在list中加入总页数
		
		return list;
	}
	
	
	/**
	 * 使用分页标签的检索全部的方法    2008-5-23
	 */
	@SuppressWarnings("unchecked")
	public List<T> findAllByPage(T t,int firstrows,int pagesize){
		Example example = Example.create(t);
		example.ignoreCase().enableLike(MatchMode.ANYWHERE);//对查询对象进行忽略大小写的模糊查询,适用于动态查询
		Criteria criteria = session.createCriteria(t.getClass()).add(example);
		criteria.setFirstResult(firstrows);
		criteria.setMaxResults(pagesize);
		List<T> list =  criteria.list();
		return list;
		
	}
	

	/**
	 * 跨表检索  2008-6-3   10:57
	 * @param t1
	 * @param t2
	 * @param firstrows
	 * @param pagesize
	 * @return
	 * @throws HibernateException
	 */
	public List finddb(T t1, T t2, int firstrows, int pagesize)
			throws HibernateException {
		Example example = Example.create(t1);
		example.ignoreCase().enableLike(MatchMode.ANYWHERE);
		example.excludeZeroes();
		Example example2 = Example.create(t2);
		example2.ignoreCase().enableLike(MatchMode.ANYWHERE);
		example2.excludeZeroes();

		Criteria criteria = session.createCriteria(t1.getClass()).add(example)
				.createCriteria("t2").add(example2);
		criteria.setFirstResult(firstrows);
		criteria.setMaxResults(pagesize);
		List<T> list = criteria.list();
		return list;
	}
	
	
}

⌨️ 快捷键说明

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