五、通用Dao层之CoreDao接口与CoreDaoImpl抽象类

一、CoreDao接口

五、通用Dao层之CoreDao接口与CoreDaoImpl抽象类

/**
 * 通用表的添加、删除、修改和查询操作类接口
 * @author chendejiang
 *
 * @param <T> 后台bean
 * @param <F> 前台bean
 */
public interface CoreDao<T extends Serializable, F extends PageForm> {
    /**
     * 保存一个或多个实体
     * @param entities 一个或多个实体
     */
    public void save(Object... entities);
    
    /***
     * 更新一个或多个实体
     * @param entities 一个或多个实体
     */
    public void update(Object... entities);
    
    /***
     * 根据一个或多个主键删除实体
     * @param ids 一个或多个主键
     */
    public void delete(Serializable... ids);
    
    /***
     * 根据主键获取实体
     * @param id 主键
     * @return 实体
     */
    public T find(Serializable id);

    /**
     * 查询实体的所有记录
     * @return
     */
    public List<T> findAll();

    /**
     * 查询实体的所有记录
     * @param orderby 排序属性key:属性;value:ASC或DESC
     * @return
     */
    public List<T> findAll(Map<String,String> orderby);

    /**
     * 按分页查询实体的所有数据
     * @param form
     * @return 返回PageView<T>对象
     */
    public PageView<T> getScrollData(F form);

    /**
     * 获得该实体对应的表的记录总数
     * @return 记录总数
     */
    public long getCount();
    
    /**
     * 获得该实体对应的表的记录总数
     * @param propertyName 比较的实体属性名
     * @param wherePropertyName 按条件的实体属性名
     * @return 记录总数
     */
    public long getCount(String wherePropertyName,Object whereValue);

    /**
     * 获得实体的数字型的属性在数据库中的最大值
     * @param propertyName 实体的属性名
     * @return 最大值
     */
    public Long getMaxNum(String propertyName);
    
    /**
     * 获得实体的数字型的属性在数据库中的最大值
     * @param propertyName 比较的实体属性名
     * @param wherePropertyName 按条件的实体属性名
     * @param whereValue 按条件的值
     * @return
     */
    public Long getMaxNum(String propertyName,String wherePropertyName,Object whereValue);
    
    /**
     * 获得实体的下一个编号
     * @param entity 实体Bean对象。如User实例对象
     * @param propertyName 比较的实体属性名
     * @return
     */
    public Long getNextNum(Object entity,String propertyName);

    /**
     * 获得实体的下一个编号
     * @param entity 实体Bean对象。如User实例对象
     * @param propertyName 比较的实体属性名
     * @param parentPropertyName 父节点属性名
     * @return
     */
    public Long getNextNum(Object entity,String propertyName,String parentPropertyName);
    
    /**
     * 是否已存在
     * @param propertyName 比较的实体属性名
     * @param value 比较的值
     * @return
     */
    public boolean isExists(String propertyName,Object value);
    
    /**
     * 是否已存在
     * @param propertyName 比较的实体属性名
     * @param value 比较的值
     * @param wherePropertyName 按条件的实体属性名
     * @param whereValue 按条件的值
     * @return
     */
    public boolean isExists(String propertyName,Object value,String wherePropertyName,Object whereValue);

    /**
     * 上移
     * @param id 主键
     * @param sortPropertyName 排序的实体属性名
     */
    public void moveUp(Serializable id,String sortPropertyName);
    
    /**
     * 上移
     * @param id 主键
     * @param sortPropertyName 排序的实体属性名
     * @param parentPropertyName 父节点属性名
     */
    public void moveUp(Serializable id,String sortPropertyName,String parentPropertyName);

    /**
     * 下移
     * @param id 主键
     * @param sortPropertyName 排序的实体属性名
     */
    public void moveDown(Serializable id,String sortPropertyName);
    
    /**
     * 下移
     * @param id 主键
     * @param sortPropertyName 排序的实体属性名
     * @param parentPropertyName 父节点属性名
     */
    public void moveDown(Serializable id,String sortPropertyName,String parentPropertyName);
}

二、CoreDaoImpl抽象类:


/**
 * 通用表的添加、删除、修改和查询操作类接口
 * @author chendejiang
 *
 * @param <T> 后台bean
 * @param <F> 前台bean
 */
public abstract class CoreDaoImpl<T extends Serializable, F extends PageForm> extends BaseDaoImpl<T, F> implements CoreDao<T, F> {

}


你可能感兴趣的:(五、通用Dao层之CoreDao接口与CoreDaoImpl抽象类)