All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.easyproject.easycommons.commondao.CommonDAO Maven / Gradle / Ivy

package cn.easyproject.easycommons.commondao;

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


import org.hibernate.Session;
import cn.easyproject.easycommons.commondao.util.EasyCriteria;
import cn.easyproject.easycommons.commondao.util.PageBean;


/**
 * Hibernate CommonDAO 
 * @author Ray
 * @author [email protected]
 * @author easyproject.cn
 * @since 1.0.0
 *
 */
@SuppressWarnings("rawtypes")
public interface CommonDAO {
	/**
	 */
	String DEFAULT_QUERY_CACHE_REGION = "org.hibernate.cache.internal.StandardQueryCache";
	
	/**
	 * 使用JDBC执行原生的批量SQL,单参数语句值列表
	 * @param sql SQL语句
	 * @param values 单参数语句值列表
	 */
	public void batchUpdateSQL(final String sql, final Object[] values);
	/**
	 * 使用JDBC执行原生的批量SQL,多参数语句值列表
	 * @param sql SQL语句
	 * @param values 多参数语句值列表
	 */
	public void batchUpdateSQL(final String sql, final Object[][] values);
	/**
	 * 删除
	 * @param cls 类型
	 * @param id OID
	 */
	public void delete(Class cls, Serializable id);
	/**
	 * 删除对象
	 * @param o 实体对象
	 */
	public void delete(Object o);
	
	/**
	 * 批量删除,对使用,分隔的列表执行删除
	 * @param cls 类型ls 类型
	 * @param fieldName 删除条件字段
	 * @param values 语句参数值列表List 要删除的字段列表,使用,分隔
	 * @return affected rows count
	 */
	 public Integer deleteByValues(Class cls, String fieldName, String[] values);
	 
	 /**
	  * 带级联的批量删除,对使用,分隔的列表执行删除,deleteByValues不支持级联删除
	  * @param cls 类型
	  * @param fieldName 删除条件字段
	  * @param values 集合值列表
	  */
	 public void deleteCascadeByValues(Class cls, String fieldName, String[] values);
	 
	/**
	 * 清除二级缓存中所有的c对象
	 * @param cls 类型
	 */
	public void evict(Class cls);
	
	/**
	 * 清除二级缓存中OID为id的c对象
	 * @param cls 类型
	 * @param id OID
	 */
	public void evict(Class cls,Serializable id);
	/**
	 * 清除二级缓存中所有对象
	 */
	public void evictAll();
	
	/**
	 * 清除二级缓存中指定类的集合属性
	 * @param collectionRegion 查询缓存区域
	 */
	public void evictCollectionRegion(String collectionRegion);
	
	/**
	 * 清除二级缓存中指定id类的集合属性
	 * @param collectionRegion 查询缓存区域
	 * @param id OID
	 */
	public void evictCollectionRegion(String collectionRegion,Serializable id);
    /**
	 * 清除默认区域的查询缓存策略,如果默认为空,则清除所有标准区域查询缓存策略
	 */
	public void evictQueries();
    /**
	 * 清除指定区域策略的查询缓存
	 * @param queryCacheRegion 指定查询缓存区域
	 */
	public void evictQueries(String queryCacheRegion);

 
    /**
	 * 通过Id查询
	 * @param cls 类型
	 * @param id OID
	 * @return Object
	 */
	public  T find(Class cls, Serializable id);

	/**
	 * 按条件根据hql查询
	 * @param hql hql语句 hql
	 * @param easyCriteria EasyCriteria条件对象
	 * @return List
	 */
	public List find(String hql,EasyCriteria easyCriteria);
	
	/**
	 * 根据hql查询
	 * @param hql hql语句 hql
	 * @param values 语句参数值列表 参数列表
	 * @return List
	 */
	public List find(String hql, Object... values);
	
	/**
	 * 查询所有
	 * @param cls 类型ls
	 * @return List
	 */
	public List findAll(Class cls);
	
	/**
	 * 带查询缓存查询,
	 * 查询缓存,使用DEFAULT_QUERY_CACHE_REGION指定区域的缓存,如DEFAULT_QUERY_CACHE_REGION==null或=="",则使用默认标准区域缓存策略
	 * @param hql hql语句
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return List
	 */
	public List findByCache(String hql, EasyCriteria easyCriteria);
	/**
	 * 带查询缓存查询,
	 * 查询缓存,使用DEFAULT_QUERY_CACHE_REGION指定区域的缓存,如DEFAULT_QUERY_CACHE_REGION==null或=="",则使用默认标准区域缓存策略
	 * @param hql hql语句
	 * @param values 语句参数值列表
	 * @return List
	 */
	public List findByCache(String hql, Object... values);
	
	/**
	 * 查询缓存,需要指定具体的缓存策略区域
	 * @param hql hql语句
	 * @param queryCacheRegion 指定查询缓存区域
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return List
	 */
	public List findByCache(String hql, String queryCacheRegion, EasyCriteria easyCriteria);
	/**
	 * 查询缓存,需要指定具体的缓存策略区域
	 * @param hql hql语句
	 * @param queryCacheRegion 指定查询缓存区域
	 * @param values 语句参数值列表
	 * @return List
	 */
	public List findByCache(String hql, String queryCacheRegion, Object... values);
	
	/**
	 * 分页查询
	 * @param pageBean pageBean
	 */
	public void findByPage(PageBean pageBean);
	/**
	 * 分页查询
	 * @param pageBean pageBean
	 * @param easyCriteria 按条件分页查询方法
	 */
	public void findByPage(PageBean pageBean,EasyCriteria easyCriteria);
	
	/**
	 * 分页查询
	 * @param pageBean pageBean
	 * @param values 语句参数值列表
	 */
	public void findByPage(PageBean pageBean,List values);  
	/**
	 * 简单查询,按照字段查询
	 * @param cls 类型ls
	 * @param propertyName 属性名
	 * @param value 属性值
	 * @return List
	 */
    public List findByProperty(Class cls, String propertyName, Object value);  
	
	/**
	 * 按照字段查询,不区分大小写
	 * @param cls 类型ls
	 * @param propertyName 属性名
	 * @param value 属性值
	 * @return List
	 */
    public List findByPropertyIgnoreCase(Class cls, String propertyName, String value);
	
	/**
	 * 执行Native SQL,返回封装的 Map 对象集合
	 * @param sql SQL语句
	 * @param resultClass 类型 封装的类型
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return 查询的结果封装为transformers指定的类型
	 */
	public List findBySQL(String sql, Class resultClass, EasyCriteria easyCriteria);
	
	/**
	 * 执行Native SQL,返回封装的对象集合
	 * @param sql SQL语句
	 * @param resultClass 类型 封装的类型
	 * @param values 语句参数值列表
	 * @return 查询的结果封装为c指定的实体
	 */
	public List findBySQL(String sql, Class resultClass, Object... values);
	
	/**
	 * 执行Native SQL,返回封装的对象集合
	 * @param sql SQL语句
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return 查询的结果,多列时转换为Object[]
	 */
	public List findBySQL(String sql,EasyCriteria easyCriteria);

	
	/**
	 * 执行Native SQL,返回封装的对象集合
	 * @param sql SQL语句
	 * @param values 语句参数值列表
	 * @return 查询的结果,多列时转换为Object[]
	 */
	public List findBySQL(String sql,Object... values);
	
	
	
	/**
	 * 通过hql语句查询总条数
	 * @param hql hql语句
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return 总条数
	 */
	public int findCount(String hql, EasyCriteria easyCriteria);  
	
	/**
	 * 通过hql语句查询总条数
	 * @param hql hql语句
	 * @param values 语句参数值列表
	 * @return 总条数
	 */
	public int findCount(String hql, Object... values);  
	
	/**
	 * 执行Native SQL,返回封装的 Map 对象集合
	 * @param sql SQL语句
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return 查询的结果封装为transformers指定的类型
	 */
	public List findMapResultBySQL(String sql,EasyCriteria easyCriteria);  
	/**
	 * 执行Native SQL,返回封装的 Map 对象集合
	 * @param sql SQL语句
	 * @param values 语句参数值列表
	 * @return 查询的结果封装为transformers指定的类型
	 */
	public List findMapResultBySQL(String sql, Object... values);  
	/**
	 * 查询数据条数,并根据每页条数计算总页数
	 * @param hql 查询条数的语句
	 * @param rowsPerPage 每页显示条数
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return 总页数
	 */
	public int findMaxPage(String hql, int rowsPerPage, EasyCriteria easyCriteria);  
	 
	/**
	 * 查询数据条数,并根据每页条数计算总页数
	 * @param hql 查询条数的语句
	 * @param rowsPerPage 每页显示条数
	 * @param values 语句参数值列表
	 * @return 总页数
	 */
	public int findMaxPage(String hql, int rowsPerPage, Object... values);  
	
	/**
     * 执行命名查询
     * @param name queryName
     * @param values 语句参数值列表
     * @return List
     */
    public List findNamedQuery(String name, Object... values) ; 
	/**
     * 执行命名查询
     * @param name queryName
     * @param queryCacheRegion 指定查询缓存区域
     * @param values 语句参数值列表
     * @return List
     */
    public List findNamedQueryByCache(String name, String queryCacheRegion, Object... values) ;
	
	/**
	 * 查询前topCount条数据
	 * @param hql hql语句
	 * @param topCount count
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return List
	 */
	public List findTop(String hql,int topCount,  EasyCriteria easyCriteria);
	
	
	
	/**
	 * 查询前topCount条数据
	 * @param hql hql语句
	 * @param topCount count
	 * @param values 语句参数值列表
	 * @return List
	 */
	public List findTop(String hql,int topCount, Object... values); 
	/**
	 * 查询单个(单行单列)数据,如最大值,最小值等等
	 * @param hql 单个数据查询语句
	 * @param easyCriteria EasyCriteria条件对象 
	 * @return 查询到的单个值
	 */
	public  T findVal(String hql,  EasyCriteria easyCriteria);
	
	/**
	 * 查询单个(单行单列)数据,如最大值,最小值等等
	 * @param hql 单个数据查询语句
	 * @param values 语句占位符对应的值
	 * @return 查询到的单个值
	 */
	public  T findVal(String hql, Object... values);

	/**
	 * 获取Session
	 * @return Session
	 */
	public Session getCurrentSession();
	
	/**
	 * 初始化关联的对象
	 * @param proxy 对象
	 */
	public void initialize(Object proxy) ;
	
	/**
	 * 将集合中的对象深度初始化
	 * @param collection Collection
	 */
	public void initializeDeep(Collection collection);
	/**
	 * 修改对象
	 * @param o 实体对象
	 */
	public void merge(Object o);
	/**
	 * 新增
	 * @param o 实体对象
	 */
	public void persist(Object o); 
	/**
	 * 通过hql语句进行批量修改(更新,删除)
	 * @param hql hql语句
	 * @param values 语句参数值列表
	 */
	public void updateByHql(String hql,Object... values);
	/**
	 * 使用JDBC执行原生的增删改SQL语句
	 * @param sql SQL语句
	 * @param values 语句参数值列表
	 */
	public void updateBySQL(String sql,Object...values);
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy