package com.common.dao;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 泛型化的DAO基本接口定义。为了和“XXXDao”等常规的领域对象的Dao相区分,这里在命名上故意将DAO全大写并放在了前边。
*
* @authortgl
*/
public interface DAOBase {
/**
* 根据对象主键ID查找对象
*
* @paramid主键ID
* @return相关对象
*/
T get(long id);
/**
* 保存新对象
*
* @paramentity待保存的对象
*/
void create(T entity);
/**
* 保存对象的更新
*
* @paramentity待保存的对象
*/
void update(T entity);
/**
* 删除指定的对象
*
* @paramentity待删除的对象
*/
void delete(T entity);
/**
* 删除指定的对象
*
* @paramfilter删除的条件
* @return实际删除的对象数量
*/
int delete(DAOFilter filter);
/**
* 清空表
*
* @return实际删除的对象数量
*/
int clear();
/**
* 返回对象的数量
*
* @return对象的数量
*/
int count();
/**
* 获得 最新记录的创建时间
*
* @return
*/
Date getDataMax();
/**
* 获得最早记录的创建时间
*
* @return
*/
Date getDateMin();
/**
* 返回条件的对象数量
*
* @paramfilter查询条件
*/
int count(DAOFilter filter);
/**
* 进行无条件的统计,返回统计对象。
*
* @param count进行count统计的字段及其别名Map
* @param sum进行sum统计的字段及其别名Map
* @param fields用于显示的字段列表,fields包含的元素必须是groupBy的子集
* @param groupBy进行分组统计的字段列表
* @return 统计对象列表
*/
List stat(Map count, Map sum, List fields, List groupBy);
/**
* 进行有条件的统计,返回统计对象。
*
* @paramcount进行count统计的字段及其别名Map
* @paramsum进行sum统计的字段及其别名Map
* @paramfields用于显示的字段列表,fields包含的元素必须是groupBy的子集
* @paramgroupBy进行分组统计的字段列表
* @paramfilter查询条件
* @return 统计对象列表
*/
List stat(Map count, Map sum, List fields, List groupBy, DAOFilter filter);
/**
* 进行无条件的统计,返回统计对象。
*
* @parampageNo页码,从“1”开始
* @parampageSize页大小
* @param count进行count统计的字段及其别名Map
* @param sum进行sum统计的字段及其别名Map
* @param fields用于显示的字段列表,fields包含的元素必须是groupBy的子集
* @param groupBy进行分组统计的字段列表
* @return 统计对象列表
*/
FlipList stat(int pageNo, int pageSize, Map count, Map sum, List fields, List groupBy);
/**
* 进行有条件的统计,返回统计对象。
*
* @parampageNo页码,从“1”开始
* @parampageSize页大小
* @paramcount进行count统计的字段及其别名Map
* @paramsum进行sum统计的字段及其别名Map
* @paramfields用于显示的字段列表,fields包含的元素必须是groupBy的子集
* @paramgroupBy进行分组统计的字段列表
* @paramfilter查询条件
* @return 统计对象列表
*/
FlipList stat(int pageNo, int pageSize, Map count, Map sum, List fields, List groupBy, DAOFilter filter);
/**
* 返回符合查询条件的对象,如果有多个对象符合条件,则返回第一个
*
* @paramfilter查询条件
* @return符合条件的对象或者null
*/
T find(DAOFilter filter);
/**
* 返回全部对象
*
* @return全部对象的列表
*/
List list();
/**
* 返回全部对象
*
* @return全部对象的列表
*/
List list(Long[] ids);
/**
* 返回全部对象
*
* @return全部对象的列表
*/
List list(List list);
/**
* 返回符合查询条件的全部对象
*
* @paramfilter查询条件
* @return对象列表
*/
List list(DAOFilter filter);
/**
* 按照默认顺序、无查询条件,返回介于起止位置的全部对象
*
* @paramstart起点,从“0”开始
* @paramcount个数
* @return全部对象的列表
*/
List list(int start, int count);
/**
* 按照给定的查询条件和排序方式,返回介于起止位置的全部对象
*
* @paramstart起点,从“0”开始
* @paramcount个数
* @paramfilter查询条件
* @return对象列表
*/
List list(int start, int count, DAOFilter filter);
/**
* 按照默认顺序、无查询条件,分页返回对象列表
*
* @parampageNo页码,从“1”开始
* @parampageSize页大小
* @paramfilter查询条件
* @return分页的对象列表
*/
FlipList flip(int pageNo, int pageSize);
/**
* 按照给定的查询条件和排序方式,分页返回对象列表
*
* @parampageNo页码,从“1”开始
* @parampageSize页大小
* @paramfilter查询条件
* @return分页的对象列表
*/
FlipList flip(int pageNo, int pageSize, DAOFilter filter);
}