package com.ym.mec.common.service;

/**
 * GenericService.java 
 * Copyright © 2015-2015
 * 
 * @author pengdc
 * @create 2015年7月13日
 */
import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.ym.mec.common.page.PageInfo;
import com.ym.mec.common.page.QueryInfo;

public interface BaseService<PK extends Serializable, T> {
	/**
	 * 通过主键id获取对象
	 * @author pengdc
	 * @param id
	 * @return T
	 */
	public T get(final PK id);

	/**
	 * 更新实体对象
	 * @author pengdc
	 * @param bean
	 * @return int
	 */
	public int update(T bean);

	/**
	 * 通过主键id删除对象
	 * @author pengdc
	 * @param id
	 * @return int
	 */
	public int delete(final PK id);

	/**
	 * 写入实体对象
	 * @author pengdc
	 * @param bean
	 * @return int
	 */
	public long insert(T bean);

	/**
	 * 通过参数查找所有结果集
	 * @author pengdc
	 * @param params
	 * @return
	 */
	public List<T> findAll(Map<String, Object> params);

	/**
	 * 通过参数查找结果集，适合分页场景
	 * @author pengdc
	 * @param params
	 * @return
	 */
	public PageInfo<T> queryPage(QueryInfo queryInfo);

	/**
	 * 通过参数查找结果集数目
	 * @author pengdc
	 * @param params
	 * @return
	 */
	public int findCount(Map<String, Object> params);
	
}
