最代码广告位
首页>分享>java范型DAO实现>/1122617012257792.java
package com.common.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 泛型化的DAO基本接口定义。为了和“XXXDao”等常规的领域对象的Dao相区分,这里在命名上故意将DAO全大写并放在了前边。
 * 
 * @author	tgl
 */
public interface DAOBase<T> {

	/**
	 * 根据对象主键ID查找对象
	 *
	 * @param	id	主键ID
	 * @return	相关对象
	 */
	T get(long id);

	/**
	 * 保存新对象
	 *
	 * @param	entity	待保存的对象
	 */
	void create(T entity);

	/**
	 * 保存对象的更新
	 *
	 * @param	entity	待保存的对象
	 */
	void update(T entity);

	/**
	 * 删除指定的对象
	 *
	 * @param	entity	待删除的对象
	 */
	void delete(T entity);

	/**
	 * 删除指定的对象
	 *
	 * @param	filter	删除的条件
	 * @return	实际删除的对象数量
	 */
	int delete(DAOFilter filter);

	/**
	 * 清空表
	 * 
	 * @return	实际删除的对象数量
	 */
	int clear();

	/**
	 * 返回对象的数量
	 *
	 * @return	对象的数量
	 */
	int count();

	/**
	 * 获得 最新记录的创建时间
	 * 
	 * @return
	 */
	Date getDataMax();

	/**
	 * 获得最早记录的创建时间
	 * 
	 * @return
	 */
	Date getDateMin();

	/**
	 * 返回条件的对象数量
	 *
	 * @param	filter	查询条件
	 */
	int count(DAOFilter filter);

	/**
	 * 进行无条件的统计,返回统计对象。
	 * 
	 * @param count		进行count统计的字段及其别名Map
	 * @param sum		进行sum统计的字段及其别名Map
	 * @param fields	用于显示的字段列表,fields包含的元素必须是groupBy的子集
	 * @param groupBy	进行分组统计的字段列表
	 * @return 统计对象列表
	 */
	List<T> stat(Map<String, String> count, Map<String, String> sum, List<String> fields, List<String> groupBy);

	/**
	 * 进行有条件的统计,返回统计对象。
	 * 
	 * @param	count	进行count统计的字段及其别名Map
	 * @param	sum		进行sum统计的字段及其别名Map
	 * @param	fields	用于显示的字段列表,fields包含的元素必须是groupBy的子集
	 * @param	groupBy	进行分组统计的字段列表
	 * @param	filter	查询条件
	 * @return 统计对象列表
	 */
	List<T> stat(Map<String, String> count, Map<String, String> sum, List<String> fields, List<String> groupBy, DAOFilter filter);

	/**
	 * 进行无条件的统计,返回统计对象。
	 * 
	 * @param	pageNo		页码,从“1”开始
	 * @param	pageSize	页大小
	 * @param count			进行count统计的字段及其别名Map
	 * @param sum			进行sum统计的字段及其别名Map
	 * @param fields		用于显示的字段列表,fields包含的元素必须是groupBy的子集
	 * @param groupBy		进行分组统计的字段列表
	 * @return 统计对象列表
	 */
	FlipList<T> stat(int pageNo, int pageSize, Map<String, String> count, Map<String, String> sum, List<String> fields, List<String> groupBy);

	/**
	 * 进行有条件的统计,返回统计对象。
	 * 
	 * @param	pageNo		页码,从“1”开始
	 * @param	pageSize	页大小
	 * @param	count		进行count统计的字段及其别名Map
	 * @param	sum			进行sum统计的字段及其别名Map
	 * @param	fields		用于显示的字段列表,fields包含的元素必须是groupBy的子集
	 * @param	groupBy		进行分组统计的字段列表
	 * @param	filter		查询条件
	 * @return 统计对象列表
	 */
	FlipList<T> stat(int pageNo, int pageSize, Map<String, String> count, Map<String, String> sum, List<String> fields, List<String> groupBy, DAOFilter filter);

	/**
	 * 返回符合查询条件的对象,如果有多个对象符合条件,则返回第一个
	 *
	 * @param	filter	查询条件
	 * @return	符合条件的对象或者<code>null</code>
	 */
	T find(DAOFilter filter);

	/**
	 * 返回全部对象
	 *
	 * @return	全部对象的列表
	 */
	List<T> list();

	/**
	 * 返回全部对象
	 *
	 * @return	全部对象的列表
	 */
	List<T> list(Long[] ids);

	/**
	 * 返回全部对象
	 *
	 * @return	全部对象的列表
	 */
	List<T> list(List<Long> list);

	/**
	 * 返回符合查询条件的全部对象
	 *
	 * @param	filter	查询条件
	 * @return	对象列表
	 */
	List<T> list(DAOFilter filter);

	/**
	 * 按照默认顺序、无查询条件,返回介于起止位置的全部对象
	 *
	 * @param	start	起点,从“0”开始
	 * @param	count	个数
	 * @return	全部对象的列表
	 */
	List<T> list(int start, int count);

	/**
	 * 按照给定的查询条件和排序方式,返回介于起止位置的全部对象
	 *
	 * @param	start	起点,从“0”开始
	 * @param	count	个数
	 * @param	filter	查询条件
	 * @return	对象列表
	 */
	List<T> list(int start, int count, DAOFilter filter);

	/**
	 * 按照默认顺序、无查询条件,分页返回对象列表
	 *
	 * @param	pageNo		页码,从“1”开始
	 * @param	pageSize	页大小
	 * @param	filter		查询条件
	 * @return	分页的对象列表
	 */
	FlipList<T> flip(int pageNo, int pageSize);

	/**
	 * 按照给定的查询条件和排序方式,分页返回对象列表
	 *
	 * @param	pageNo		页码,从“1”开始
	 * @param	pageSize	页大小
	 * @param	filter		查询条件
	 * @return	分页的对象列表
	 */
	FlipList<T> flip(int pageNo, int pageSize, DAOFilter filter);

}
最近下载更多
18711486720 LV12019年7月4日
星星
GUYINGNAN LV32018年10月17日
星星星星星星
zzlsrj LV102015年3月14日
月亮月亮星星星星
erwcgb LV32015年2月12日
星星星星星星
dggesde LV42015年2月1日
月亮
迷彩风情 LV262014年11月4日
太阳月亮月亮星星星星
AXIN LV362014年2月12日
太阳太阳月亮
最近浏览更多
滴滴嗒嗒 LV124月2日
月亮月亮月亮
小王wang LV101月13日
月亮月亮星星星星
安妮的小熊 LV62019年12月23日
月亮星星星星
嘿嘿32112019年8月29日
暂无贡献等级
18711486720 LV12019年7月4日
星星
tonghao LV162019年5月29日
太阳
安宇12345 LV132019年4月22日
月亮月亮月亮星星
fengyitian2019年1月23日
暂无贡献等级
GUYINGNAN LV32018年10月17日
星星星星星星
948822315 LV82018年9月13日
月亮月亮
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友