/** 
 * @Title: BasicDAO.java 
 * @Package com.zhiweidata.bjfzxWebapp.mongoDao 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author xuyimeng 
 * @date 2018年2月6日 上午9:24:25 
 * @version V1.0 
 */ /**
 * 
 */
package com.zhiweidata.bjfzxWebapp.mongoDao;

import java.util.List;

import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import com.zhiweidata.bjfzxWebapp.entity.WeiboBusiness;
import com.zhiweidata.bjfzxWebapp.exception.ZhiweiException;


/** 
 * @ClassName: BasicDAO 
 * @Description: TODO(这里用一句话描述这个类的作用) 
 * @author xuyimeng 
 * @date 2018年2月6日 上午9:24:25  
 */
public interface BasicDAO<T> {
		
		/**
		 * @Title: add 
		 * @Description: 添加数据 
		 * @param  t
		 * @param @return 设定文件 
		 * @return int 返回类型
		 */
		int add(T t) throws ZhiweiException;
		
		/**
		 * @Title: add 
		 * @Description:批量添加
		 * @param  list
		 * @param @return 设定文件 
		 * @return int 返回类型
		 */
		int add(List<T> list) throws ZhiweiException;
		
		
		/**
		 * @Title: update 
		 * @Description: TODO(指定更新字段) 
		 * @param  query
		 * @param  update
		 * @param @return
		 * @param @throws ZhiweiException 设定文件 
		 * @return int 返回类型
		 */
		int update(Query query, Update update) throws ZhiweiException;
		
		/***
		 * @Title: find 
		 * @Description:根据条件查询相应数据
		 * @param  query
		 * @param @return 设定文件 
		 * @return List<T> 返回类型
		 */
		List<T> find(Query query) throws ZhiweiException;
		
		/**
		 * @Title: findOne 
		 * @Description: TODO(根据条件查询具体某一条数据) 
		 * @param  query
		 * @param @return
		 * @param @throws ZhiweiException 设定文件 
		 * @return T 返回类型
		 */
		T findOne(Query query) throws ZhiweiException;
		
		/**
		 * @Title: count 
		 * @Description: 根据相应条件查询数据量 
		 * @param  query
		 * @param @return 设定文件 
		 * @return long 返回类型
		 */
		long count(Query query) throws ZhiweiException;

		/** 
		 * @Title: findAll 
		 * @Description: TODO(这里用一句话描述这个方法的作用) 
		 * @return
		 * @throws ZhiweiException
		 *     List<WeiboBusiness> 返回类型 
		 */ 
		List<T> findAll() throws ZhiweiException;
}
