import java.io.Serializable;
import java.util.List;
import Filter;
import Order;
import Page;
import Pageable;
/**
* Service - 基类
*/
public interface BaseService<T, ID extends Serializable> {
/**
* 查找实体对象
*
* @param id
* ID
* @return 实体对象,若不存在则返回null
*/
T find(ID id);
/**
* 查找所有实体对象集合
*
* @return 所有实体对象集合
*/
List<T> findAll();
/**
* 查找实体对象集合
*
* @param ids
* ID
* @return 实体对象集合
*/
List<T> findList(ID... ids);
/**
* 查找实体对象集合
*
* @param count
* 数量
* @param filters
* 筛选
* @param orders
* 排序
* @return 实体对象集合
*/
List<T> findList(Integer count, List<Filter> filters, List<Order> orders);
/**
* 查找实体对象集合
*
* @param first
* 起始记录
* @param count
* 数量
* @param filters
* 筛选
* @param orders
* 排序
* @return 实体对象集合
*/
List<T> findList(Integer first, Integer count, List<Filter> filters, List<Order> orders);
/**
* 查找实体对象分页
*
* @param pageable
* 分页信息
* @return 实体对象分页
*/
Page<T> findPage(Pageable pageable);
/**
* 查询实体对象总数
*
* @return 实体对象总数
*/
long count();
/**
* 查询实体对象数量
*
* @param filters
* 筛选
* @return 实体对象数量
*/
long count(Filter... filters);
/**
* 判断实体对象是否存在
*
* @param id
* ID
* @return 实体对象是否存在
*/
boolean exists(ID id);
/**
* 判断实体对象是否存在
*
* @param filters
* 筛选
* @return 实体对象是否存在
*/
boolean exists(Filter... filters);
/**
* 保存实体对象
*
* @param entity
* 实体对象
*/
void save(T entity);
/**
* 更新实体对象
*
* @param entity
* 实体对象
* @return 实体对象
*/
T update(T entity);
/**
* 更新实体对象
*
* @param entity
* 实体对象
* @param ignoreProperties
* 忽略属性
* @return 实体对象
*/
T update(T entity, String... ignoreProperties);
/**
* 更新实体对象
*
* @param entity
* 实体对象
* @return 实体对象
*/
T saveOrUpdate(T entity);
/**
* 更新实体对象
*
* @param entity
* 实体对象
* @param ignoreProperties
* 忽略属性
* @return 实体对象
*/
T saveOrUpdate(T entity, String... ignoreProperties);
/**
* 删除实体对象
*
* @param id
* ID
*/
void delete(ID id);
/**
* 删除实体对象
*
* @param ids
* ID
*/
void delete(ID... ids);
/**
* 删除实体对象
*
* @param entity
* 实体对象
*/
void delete(T entity);
/**
* 批量更新
* @param list
*/
void batchUpdate(List<T> list);
}