package com.dubh.common.dao;

import java.io.Serializable;
import java.util.List;

/**
 * @author 作者姓名: dubaohui
 * @version 创建时间：2015-5-15 上午11:19:21
 * 类说明 ：公用方法接口类
 */
public interface Dao {
	
	
    
    /**
     * 获取单一对象
     * @param clazz 实体类
     * @param id 主键
     * @return
     */
    public Object getObject(Class clazz,Serializable id);
    
    /**
     * 添加对象
     * @param object 实体类
     * @throws Exception
     */
    public void saveObject(Object object) throws Exception;
    
    /**
     * 更新对象
     * @param object 实体对象
     * @throws Exception
     */
    public void updateObject(Object object) throws Exception;
    
    /**
     * 通过传入hql语句进行批量更新对象
     * @param hqlStr HQL语句
     * @throws Exception
     */
    public void updateHql(String hqlStr) throws Exception;
    
    /**
     * 删除对象
     * @param clazz 实体类
     * @param id 主键
     * @throws Exception
     */
    public void removeObject(Class clazz, Serializable id) throws Exception;
    
    /**
     * 通过传入标准sql语句获取记录集
     * @param sqlStr SQL语句
     * @return 返回记录集
     * @throws Exception
     */
    public List getRsBySql(String sqlStr) throws Exception;
    
    /**
     * 通过传入标准sql语句获取记录集,并支持分页
     * @param sqlStr SQL语句
     * @param pageNo 页码
     * @param pageSize 页面大小
     * @return 返回记录集
     * @throws Exception
     */
    public List getRsBySql(String sqlStr,int pageNo,int pageSize) throws Exception;
    
    /**
     * 通过传入hql语句获取记录集,并支持分页功能
     * @param hqlStr HQL语句
     * @param pageNo 页码
     * @param pageSize 页面大小
     * @return 返回记录集
     * @throws Exception
     */
    public List getRsByHql(String hqlStr,int pageNo,int pageSize) throws Exception;
    
    /**
     * 批量删除数据
     * @param hqlStr HQL语句
     * @throws Exception
     */
    public void deleteHql(String hqlStr) throws Exception;
    
    /**
     * 通过传入hql语句获取记录集
     * @param hqlStr HQL语句
     * @return 返回记录集
     * @throws Exception
     */
    public List getRsByHql(String hqlStr) throws Exception;
    
    /**
     * 通过传入标准sql语句获取记录集行数
     * @param sqlStr SQL语句
     * @return
     * @throws Exception
     */
    public Integer getRsCountsBySql(String sqlStr) throws Exception;
    
    /**
     * 通过传入标准hql语句获取记录集行数
     * @param hqlStr HQL语句
     * @return
     * @throws Exception
     */
    public Integer getRsCountsByHql(String hqlStr) throws Exception;
    
    /**
     * 删除数据
     * @param object 实体对象
     */
    public void deleteObject(Object object) throws Exception;
    
    /**
     * 保存或更新一个实体对象
     * @param object 实体对象
     * @throws Exception 异常信息
     */
    public void saveOrUpdate(Object object)  throws Exception;
    
   
    
    /**
     * 标准SQL语句修改数据
     * @param sql
     * @throws Exception 
     * */
    public void updateSql (String sql) throws Exception;
    /**
     * 调用存储过程信息
     * @param stroName
     * @throws Exception
     */
    public void getcallStor(String stroName,String parm) throws Exception;
    
    /**
     * 执行标准SQL语句
     * @param sql
     * @throws Exception
     * */
    public void createView(String sql) throws Exception;
    
    
    /**
     * 获取单一对象
     * @param hql
     * @return Object
     * @throws Exception 
     * */
    public Object getObjectHql(String hql) throws Exception;
}
