package com.lyq.dao;

import java.util.List;

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

import com.lyq.util.HibernateFilter;

/**
 * 基本数据库操作类,放置操作数据库的常用方法
 * 主要用于继承
 * @author Li Yong Qiang
 */
public class SupperDao {
	//Session对象
	protected Session session = null;
	/**
	 * 保存信息
	 * @param obj 对象
	 */
	public void save(Object obj){
		try {
			session = HibernateFilter.getSession();		//获取Session对象
			session.beginTransaction();					//开启事物					
			session.save(obj);							//保存对象
			session.getTransaction().commit();			//提交事物
		} catch (Exception e) {
			e.printStackTrace();						//打印异常信息
			session.getTransaction().rollback();		//回滚事物
		}
	}
	/**
	 * 保存/更新信息
	 * @param obj 对象
	 */
	public void saveOrUpdate(Object obj){
		try {
			session = HibernateFilter.getSession();		//获取Session对象
			session.beginTransaction();					//开启事物
			session.saveOrUpdate(obj);					//保存或修改对象
			session.getTransaction().commit();			//提交事物
		} catch (Exception e) {
			e.printStackTrace();						//打印异常信息
			session.getTransaction().rollback();		//回滚事物
		}
	}
	
	/**
	 * 删除信息
	 * @param obj 对象
	 */
	public void delete(Object obj){
		try {
			session = HibernateFilter.getSession();		//获取Session对象
			session.beginTransaction();					//开启事物
			session.delete(obj);						//删除对象
			session.getTransaction().commit();			//提交事物
		} catch (Exception e) {
			e.printStackTrace();						//打印异常信息
			session.getTransaction().rollback();		//回滚事物
		}
	}
	/**
	 * 按hql查询所有信息
	 * @param hql hql语句
	 */
	public List findByHQL(String hql){
		List list = null;
		try {
			session = HibernateFilter.getSession();		//获取Session对象
			session.beginTransaction();					//开启事物
			list = session.createQuery(hql)				//创建Query对象
						  .list();						//返回结果集
			session.getTransaction().commit();			//提交事物
		} catch (Exception e) {
			e.printStackTrace();						//打印异常信息
			session.getTransaction().rollback();		//回滚事物
		}
		return list;
	}
	/**
	 * 按hql删除信息
	 * @param hql hql语句
	 */
	public void deleteByHQL(String hql){
		try {
			session = HibernateFilter.getSession();		//获取Session对象
			session.beginTransaction();					//开启事物
			session.createQuery(hql)					//创建Query对象
				   .executeUpdate();					//更新
			session.getTransaction().commit();			//提交事物
		} catch (Exception e) {
			e.printStackTrace();						//打印异常信息
			session.getTransaction().rollback();		//回滚事物
		}
	}
	/**
	 * 单值检索
	 * @param hql hql语句
	 * @param where 查询条件数组
	 * @return Object
	 */
	public Object uniqueResult(String hql,Object[] where){
		Object obj = null;
		try {
			session = HibernateFilter.getSession();		//获取Session对象
			session.beginTransaction();					//开启事物
			Query query = session.createQuery(hql);		//创建Query对象
			//如果where不为空,则对HQL语句进行动态赋值
			if(where != null && where.length > 0){
				for (int i = 0; i < where.length; i++) {
					if(where[i] != null){
						query = query.setParameter(i, where[i]);
					}
				}
			}
			obj = query.uniqueResult();					//单值检索
			session.getTransaction().commit();			//提交事物
		} catch (Exception e) {
			e.printStackTrace();						//打印异常信息
			session.getTransaction().rollback();		//回滚事物
		}
		return obj;
	}
	/**
	 * 分页查询
	 * @param hql hql语句
	 * @param offset 起始位置
	 * @param length 偏移量
	 * @param where 查询条件,Object数组类型
	 * @return List集合
	 */
	public List findPaging(String hql,int offset,int length,Object[] where){
		List list = null;
		try {
			session = HibernateFilter.getSession();		//获取Session对象
			session.beginTransaction();					//开启事物
			Query query = session.createQuery(hql);		//创建Query对象
			//构建查询条件
			if(where != null && where.length > 0){
				for (int i = 0; i < where.length; i++) {
					if(where[i] != null){
						query = query.setParameter(i, where[i]);
					}
				}
			}
			list = query.setFirstResult(offset)			//设置起始位置
						.setMaxResults(length)			//偏移量
						.list();						//获取结果集
			session.getTransaction().commit();			//提交事物
		} catch (Exception e) {
			e.printStackTrace();						//打印异常信息
			session.getTransaction().rollback();		//回滚事物
		}
		return list;
	}
}
最近下载更多
2860615178  LV4 5月29日
g11865095  LV1 5月14日
javaee165  LV2 2023年2月15日
upup996  LV6 2022年12月15日
微信网友_6261654233190400  LV2 2022年12月14日
Hsy605  LV9 2022年6月22日
北方菜  LV11 2022年5月11日
湫枫1234  LV4 2022年4月3日
wanglinddad  LV55 2022年2月23日
破衣飘飘  LV2 2022年2月9日
最近浏览更多
krispeng  LV13 8月29日
2860615178  LV4 5月29日
198536 5月21日
暂无贡献等级
g11865095  LV1 5月14日
WBelong  LV8 3月29日
yxzzxy  LV3 2月15日
247698755  LV6 1月16日
训码士 2023年12月27日
暂无贡献等级
熬夜选手不能熬夜  LV2 2023年11月14日
Chuiwaitim  LV2 2023年10月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友