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

📄 basedao.java

📁 采用最新Struts2+Hibernate架构开发
💻 JAVA
字号:
package www.hibernate.util.method;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import org.apache.commons.beanutils.BeanUtils;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;


public class BaseDao {

	public BaseDao() {

	}

	/**
	 * open session method
	 * 
	 * @return sesion
	 */
	public Session openSession() {
		return Hibernate_util.openSession();
	}

	/**
	 * start Transaction method
	 * 
	 */
	public void beginTransaction() {
		Hibernate_util.beginTransaction();
	}

	/**
	 * commit Transaction method
	 * 
	 */
	public void commitTransaction() {
		Hibernate_util.commitTransaction();
	}

	/**
	 * rollback Transaction method
	 * 
	 */
	public void rollbackTransaction() {
		Hibernate_util.rollbackTransaction();
	}

	/**
	 * close Session method
	 * 
	 */
	public void closeSession() {
		Hibernate_util.closeSession();
	}

	/**
	 * save one object method
	 * 
	 * @param obj
	 * @return Serializable
	 */
	public synchronized java.io.Serializable save(Object obj) {
		java.io.Serializable id = null;
		try {
			// 调用 openSession() 方法 得到 session
			Session session = this.openSession();
			// 开始事务
			this.beginTransaction();
			id = session.save(obj);
			// 提交事务
			this.commitTransaction();
		} catch (Exception e) {
			// 事务回滚
			this.rollbackTransaction();
			e.printStackTrace();
		} finally {
			// 关闭session 资源
			this.closeSession();
		}
		return id;
	}

	/**
	 * persist one obj method
	 * 
	 * @param obj
	 */
	public synchronized void persist(Object obj) {
		try {
			Session session = this.openSession();
			this.beginTransaction();
			session.persist(obj);
			this.commitTransaction();
		} catch (Exception e) {
			this.rollbackTransaction();
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
	}

	/**
	 * update one object method
	 * 
	 * @param obj
	 */
	public synchronized void update(Object obj) {
		try {
			Session session = this.openSession();
			this.beginTransaction();
			session.update(obj);
			this.commitTransaction();
		} catch (Exception e) {
			this.rollbackTransaction();
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
	}

	/**
	 * commonality method
	 * 
	 * @param query
	 * @param param
	 */
	public void common(Query query, String[] param) {
		if (param != null && param.length > 0)
			for (int i = 0; i < param.length; i++) {
				query.setString(i, param[i]);
			}
	}

	/**
	 * update or delete method
	 * 
	 * @param hql
	 * @param param
	 */
	public synchronized void updateOrDelete(String hql, String[] param) {
		try {
			Session session = this.openSession();
			this.beginTransaction();
			Query query = session.createQuery(hql);
			// 调用common()方法,完成所传字符串数组(String[])在该方法query下的赋值作业
			this.common(query, param);
			query.executeUpdate();
			this.commitTransaction();
		} catch (Exception e) {
			this.rollbackTransaction();
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
	}

	/**
	 * save or update method
	 * 
	 * @param obj
	 */
	public synchronized void saveOrUpdate(Object obj) {
		try {
			Session session = this.openSession();
			this.beginTransaction();
			session.saveOrUpdate(obj);
			this.commitTransaction();
		} catch (Exception e) {
			this.rollbackTransaction();
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
	}

	/**
	 * delete method
	 * 
	 * @param obj
	 */
	public synchronized void delete(Object obj) {
		try {
			Session session = this.openSession();
			this.beginTransaction();
			session.delete(obj);
			this.commitTransaction();
		} catch (Exception e) {
			this.rollbackTransaction();
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
	}

	/**
	 * query method
	 * 
	 * @param hql
	 * @param param
	 * @return list
	 */
	public synchronized List query(String hql, String[] param) {
		List list = null;
		try {
			Session session = this.openSession();
			Query query = session.createQuery(hql);
			// 调用common()方法,完成所传字符串数组(String[])在该方法query下的赋值作业
			this.common(query, param);
			list = query.list();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
		return list;
	}

	/**
	 * query method
	 * 
	 * @param hql
	 * @param param
	 * @param curpage
	 * @param page_record
	 * @return list
	 */
	public synchronized List query(String hql, String[] param, int curpage,
			int page_record) {
		List list = null;
		try {
			Session session = this.openSession();
			Query query = session.createQuery(hql);
			// 调用common()方法,完成所传字符串数组(String[])在该方法query下的赋值作业
			this.common(query, param);
			// 实现分页的起始位置
			query.setFirstResult((curpage - 1) * page_record);
			// 实现分页单位(每页所显示最大记录数)
			query.setMaxResults(page_record);
			list = query.list();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
		return list;
	}

	/**
	 * query method Class joclass 为vo ,即为查询多表,而只要求返回特定字段而设置的一个vo 此方法需要用到
	 * apache的产品 ,把下面三个jar文件放到lib下即可 commons-beanutils-bean-collecions.jar
	 * commons-beanutils-beanutils-core.jar commons-beanutils.jar
	 * 
	 * @param hql
	 * @param param
	 * @param curpage
	 * @param page_record
	 * @param joclass
	 * @return list
	 */
	public synchronized List query(String hql, String[] param, int curpage,
			int page_record, Class joclass) {
		List beans = new ArrayList();// 声明本方法所要返回的数组
		Session session = this.openSession();
		Query query = session.createQuery(hql);
		// 调用common()方法,完成所传字符串数组(String[])在该方法query下的赋值作业
		this.common(query, param);
		// 实现分页的起始位置
		query.setFirstResult((curpage - 1) * page_record);
		// 实现分页单位(每页所显示最大记录数)
		query.setMaxResults(page_record);
		try {
			List<Object[]> object = query.list();
			if (object != null)
				for (int i = 0; i < object.size(); i++){
					Object jo = joclass.newInstance();
					Object[] one = object.get(i);
					for (Object obj : one) {
						// obj对象中如果有jo对象的
						BeanUtils.copyProperties(jo, obj);
					}
					beans.add(jo);
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
		return beans;
	}

	/**
	 * converge function method
	 * 
	 * @param hql
	 * @param param
	 * @return int
	 */
	public int getValue(String hql, String[] param) {
		int id = 0;
		try {
			Session session = this.openSession();
			Query query = session.createQuery(hql);
			this.common(query, param);
			List<Integer> list = query.list();
			id = list.get(0);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
		return id;
	}

	/**
	 * get method query one record
	 * 
	 * @param clazz
	 * @param id
	 * @return object
	 */
	public synchronized Object get(Class clazz, Serializable id) {
		Object obj = null;
		try {
			Session session = this.openSession();
			obj = session.get(clazz, id);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
		return obj;
	}

	/**
	 * load method query one record
	 * 
	 * @param clazz
	 * @param id
	 * @return object
	 */
	public synchronized Object load(Class clazz, Serializable id) {
		Object one = null;
		try {
			Session session = this.openSession();
			one = session.load(clazz, id);
			Hibernate.initialize(one);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
		return one;
	}
	
	public synchronized Set copyProperty(String hql, String[] param, Class joclass) {
		Set beans = new TreeSet();// 声明本方法所要返回的数组
		Session session = this.openSession();
		Query query = session.createQuery(hql);
		// 调用common()方法,完成所传字符串数组(String[])在该方法query下的赋值作业
		this.common(query, param);
		try {
			List<Object[]> object = query.list();
			if (object != null)
				for (int i = 0; i < object.size(); i++){
					Object jo = joclass.newInstance();
					Object[] one = object.get(i);
					for (Object obj : one) {
						// obj对象中如果有jo对象的
						BeanUtils.copyProperties(jo, obj);
					}
					beans.add(jo);
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.closeSession();
		}
		return beans;
	}
}

⌨️ 快捷键说明

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