package com.vci.server.base.persistence.dao; import java.io.Serializable; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import org.hibernate.Criteria; import org.hibernate.LockMode; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.type.Type; public interface GenericDao { //---------------------基本检索、增加、修改、删除操作----------------------------- //根据主键获取实体。如果没有相应的实体,返回null。 public T getById(PK id); //根据主键获取实体并加锁。如果没有相应的实体,返回null。 public T getByIdWithLock(PK id, LockMode lock); //根据主键获取实体。如果没有相应的实体,抛出异常 public T loadById(PK id); //根据主键获取实体并加锁。如果没有相应的实体,抛出异常 public T loadByIdWithLock(PK id, LockMode lock); //获取全部实体 public List loadAll(); //更新实体 public void update(T entity); //更新实体并加锁 public void updateWithLock(T entity, LockMode lock); //存储实体到数据库 public void save(T entity); //增加或更新实体 public void saveOrUpdate(T entity); //增加或更新集合中的全部实体 public void saveOrUpdateAll(Collection entities); //删除指定的实体 public void delete(T entity); //根据主键删除指定的实体 public void deleteByKey(PK id); //删除集合中的全部实体 public void deleteAll(Collection entities); //通过合并的方式更新对象 public T merge(T entity); //-----------------------------SQL------------------------------ /** * 使用SQL进行删除和更新 *

Description:

* * @author xchao * @time 2012-5-29 * @param sql */ public void createSQLQuery(String sql); /** * 使用SQL进行删除和更新,占位符参数传递 *

Description:

* * @author xchao * @time 2012-5-29 * @param sql * @param values */ public void createSQLQuery(String sql, Object[] values); /** * 使用SQL进行删除和更新,命名参数传递 *

Description:

* * @author xchao * @time 2012-5-29 * @param sql * @param names * @param values */ public void createSQLQuery(String sql, String[] names, Object[] values); /** * 根据SQL查询对象,占位符参数传值 *

Description:

* * @author xchao * @time 2012-5-29 * @param sql * @param values * @param param * @param cls * @return */ public List findEntites(String sql, Object[] values, String param, Class cls); /** * 根据SQL查询对象,指定名称(内部名称)参数 *

Description:

* * @author xchao * @time 2012-5-29 * @param sql * @param values * @param map * @return */ public List findEntitesBySQL(String sql , Object[] values, Map map); //-----------------------------HSQL------------------------------ //使用hql进行删除和更新操作 public void createQuery(String hql); public void createQuery(String hql, Object[] values); public void createQuery(String hql, String[] names, Object[] values); // 使用HSQL语句进行对象查询 public T findEntity(String hsql); //使用HSQL语即单个属性进行对象查询 public T findEntity(String hsql, String name, String value); // 使用HSQL语句查询对象集合 public List findEntities(String hsql); public List findEntities(String hsql, String name, String value); //使用带参数的HSQL语句检索数据 public List findEntites(String hsql, Object[] values); public List findEntites(String hsql, int start, int number); public List findEntites(String hsql, int start, int number, Object[] values); //使用命名的HSQL语句检索数据 public List findByNamedQuery(String queryName); //使用带参数的命名HSQL语句检索数据 public List findByNamedQuery(String queryName, Object[] values); //使用带命名参数的命名HSQL语句检索数据 public List findByNamedQueryAndNamedParam(String query, String[] paramNames, Object[] values); //使用HSQL语句检索数据,返回Iterator public Iterator iterate(String queryString); //使用带参数HSQL语句检索数据,返回Iterator public Iterator iterate(String queryString, Object[] values); // // //关闭检索返回的Iterator // public void closeIterator(Iterator it); //---------------------------------------------Criteria------------------------ // 创建与会话无关的检索标准对象 public DetachedCriteria createDetachedCriteria(); // 创建与会话绑定的检索标准对象 public Criteria createCriteria(); // 使用指定的检索标准检索数据 public List findByCriteria(DetachedCriteria criteria); // 使用指定的检索标准检索数据,返回部分记录 public List findByCriteria(DetachedCriteria criteria, int firstResult, int maxResults); // // // 使用指定的实体及属性检索(满足除主键外属性=实体值)数据 // public List findEqualByEntity(T entity, String[] propertyNames); // // // 使用指定的实体及属性(非主键)检索(满足属性 like 串实体值)数据 // public List findLikeByEntity(T entity, String[] propertyNames); public List findByCriteria(Criterion... criterion); // 使用指定的检索标准检索数据,返回指定范围的记录 public Integer getRowCount(DetachedCriteria criteria); // 使用指定的检索标准检索数据,返回指定统计值 public Object getStatValue(DetachedCriteria criteria, String propertyName, String StatName); // 通过给定的一个对象,查找与其匹配的对象,表关联比较多时,用户可以根据需要扩展 public List findByExample(T entity); // -------------------------------- Others -------------------------------- // 加锁指定的实体 public void lock(T entity, LockMode lockMode); // 强制初始化指定的实体 // public void initialize(Object proxy); // 强制立即更新缓冲数据到数据库(否则仅在事务提交时才更新) public void flush(); //清空缓存 public void clear(); }