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

📄 hibernatedao.java

📁 企业人力资源管理
💻 JAVA
字号:
package com.y2.hr.human.common;

import java.util.List;
import org.springframework.beans.AbstractPropertyAccessor;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 * 执行数据库操作的抽象类,所有方法均为静态方法
 * 
 * @author Rocky
 * 
 */
public abstract class HibernateDAO {

	/**
	 * 查询记录数量,(主要用于提供分页参数)
	 * 
	 * @param ses
	 * @param hql
	 * @param params
	 * @return
	 */
	public static int searchCount(Session ses, String hql, Object... params) {
		return (Integer) uniqueSearch(ses, hql, params);
	}

	/**
	 * 根据HQL查询语句查询
	 * 
	 * @param ses
	 * @param hql
	 * @param params
	 * @return 结果集
	 */
	public static List search(Session ses, String hql, Object... params) {
		Query q = ses.createQuery(hql);
		setValues(q, params);
		List list = q.list();
		ses.close();
		return list;
	}

	/**
	 * 根据HQL查询语句查询
	 * 
	 * @param ses
	 * @param hql
	 * @param params
	 * @return 返回唯一的实体信息
	 */
	public static Object uniqueSearch(Session ses, String hql, Object... params) {
		Query q = ses.createQuery(hql);
		setValues(q, params);
		Object obj = q.uniqueResult();
		ses.close();
		return obj;
	}

	/**
	 * 执行非查询操作
	 * 
	 * @param ses
	 * @param hql
	 * @param params
	 * @return 返回影响的行数
	 */
	public static int execute(Session ses, String hql, Object... params) {
		Query q = ses.createQuery(hql);
		setValues(q, params);
		int result = 0;
		try {
			result = q.executeUpdate();
		} catch (Exception e) {
			// TODO: handle exception
		} finally {
			ses.close();
		}
		return result;
	}

	/**
	 * 执行添加操作
	 * 
	 * @param ses
	 * @param item
	 * @return
	 */
	public static boolean add(Session ses, Object item) {
		boolean flag = false;
		Transaction tx = ses.beginTransaction();
		try {
			ses.save(item);
			tx.commit();
			flag = true;
		} catch (Exception e) {
			// TODO: handle exception
			tx.rollback();
			e.printStackTrace();
		} finally {
			ses.close();
		}
		return flag;
	}

	/**
	 * 执行修改操作
	 * 
	 * @param ses
	 * @param item
	 * @return
	 */
	public static boolean update(Session ses, Object item) {
		boolean flag = false;
		Transaction tx = ses.beginTransaction();
		try {
			ses.update(item);
			tx.commit();
			flag = true;
		} catch (Exception e) {
			// TODO: handle exception
			tx.rollback();
			e.printStackTrace();
		} finally {
			ses.close();
		}
		return flag;
	}

	/**
	 * 执行删除操作
	 * 
	 * @param ses
	 * @param item
	 * @return
	 */
	public static boolean delete(Session ses, Object item) {
		boolean flag = false;
		Transaction tx = ses.beginTransaction();
		try {
			ses.delete(item);
			tx.commit();
			flag = true;
		} catch (Exception e) {
			// TODO: handle exception
			tx.rollback();
			e.printStackTrace();
		} finally {
			ses.close();
		}
		return flag;
	}

	/**
	 * 执行分页查询操作
	 * 
	 * @param pageSize
	 *            每页放几条(页面记录的条数)
	 * @param pageId
	 *            第几页(页码)
	 * @param ses
	 * @param hql
	 * @param params
	 * @return
	 */
	public static List paginationSearch(int pageSize, int pageId, Session ses,
			String hql, Object... params) {
		Query q = ses.createQuery(hql);
		setValues(q, params);
		q.setFirstResult(pageSize * (pageId - 1));
		q.setMaxResults(pageSize);
		List list = q.list();
		ses.close();
		return list;
	}

	public static boolean executeUpdate(Session ses, String hql,
			Object... params) {
		// TODO Auto-generated method stub
		Query q = ses.createQuery(hql);
		setValues(q, params);
		int rs = q.executeUpdate();
		ses.close();
		return rs == 0 ? false : true;
	}

	/**
	 * 为HQL语句变量赋值
	 * 
	 * @param q
	 * @param params
	 */
	public static void setValues(Query q, Object... params) {
		if (params == null) {
			return;
		}
		for (int i = 0; i < params.length; i++) {
			q.setParameter(i, params[i]);
		}
	}

}

⌨️ 快捷键说明

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