package com.bimoku.persistence.dao;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import com.bimoku.persistence.bean.PageBean;
/**
* 基础数据操作接口
* 包含:
* 批量增删改查
* 获取单一类型(int,long)类型的值
* 基本数据查询
* @date 2013-8-20
* @version v0.1.2[last version]
* @author LPM
* @param <T>
* @param <ID>
*/
public interface BaseDao<T,ID extends Serializable> {
//*******************************
//jdbc implements with jdbcsupport
//*******************************
/**
* 基础接口之一</br>
* 批量添加接口
* @param sql
* @param values
* @return
*/
public int[] batchAdd(String sql, List<List<Object>> values);
/**
* 基础接口之一</br>
* 批量删除记录接口
* @param sql
* @param values
* @return
*/
public int del(String sql, List<Object> values);
/**
* 基础接口之一</br>
* 更新接口
* @param sql
* @param values
* @return
*/
public int update(String sql, List<Object> values);
/**
* 基础接口之一</br>
* 查询一个long值
* @param sql
* @param values
* @return
*/
public long getLong(String sql, List<Object> values);
/**
* 基础接口之一</br>
* 查询一个int值
* @param sql
* @param values
* @return
*/
public int getInt(String sql, List<Object> values);
/**
* 基础接口之一</br>
* sql查询通用接口
* @param sql
* @param values
* @return
*/
public List<T> search(String sql, List<Object> values);
/**
* 基础接口之一</br>
* sql查询通用接口
* @param sql
* @param values
* @param e
* @return
*/
public <E> List<E> search(String sql, List<Object> values,Class<E> e);
/**
* 分页查询
*
* @param sql
* @param values
* @param pageBean
* @return
*/
public PageBean<T> search(String sql, List<Object> values, PageBean<T> pageBean);
/**
* 分页查询
*
* @param sql
* @param values
* @param pageBean
* @return
*/
public <E> PageBean<E> search(String sql, List<Object> values, PageBean<E> pageBean,Class<E> e);
/**
* 根据主键修改数据
*
* @param t
* @return
*/
public T update(T t);
/**
* 批量添加接口
* @param list
* @return
*/
public int[] batchSave(List<T> list);
/**
* 获取一条sql执行后返回的记录数
* @param sql
* @param values
* @return
*/
public int getCount(String sql, List<Object> values);
/**
* 判断当前表的在某条件下是否在这样的记录
* @param keys 条件
* @param values 值
* @return
*/
public boolean isExit(List<String> keys, List<Object> values);
/**
* 根据id值删除多条数据
* @param ids
* @return
*/
public int delByIds(List<ID> ids);
/**
* 根据id删除一条记录
* @param id
* @return
*/
public int del(ID id);
/**
* 根据id值查询多条数据
* @param ids
* @return
*/
public List<T> getByIds(List<ID> ids);
/**
* 根据id值查询
* @param id
* @return
*/
public T get(ID id);
/**
* 获取本表所有记录
* @return
*/
public List<T> getAll();
/**
* 获取主键列名
* @return
*/
public String getPk();
/**
* 获取表名
* @return
*/
public String getTableName();
/**
* 添加记录,并返回新增记录的主键<br/>
* 注意:<br/>
* 当主键生成策略为IDENTITY(数据库自增)时,SQL执行成功返回新数据主键,执行不成功返回0<br/>
* 主键生成策略为非IDENTITY(数据库自增)时,SQL执行返回值无法确定<br/>
* @param sql
* @param values
* @return
*/
public ID addReturnId(String sql, List<Object> values);
/**
* 保存一个对象
* @param t
* @return
*/
public T save(T t);
/**
* sql查询通用接口
* @param t
* @return
*/
public List<T> search(T t);
/**
* sql查询通用接口,忽略主键,仅返回查询结果集的第一个对象
* @param t
* @return
*/
public T searchOne(T t);
/**
*
* @param t
* @param pageBean
* @return
*/
public PageBean<T> search(T t, PageBean<T> pageBean);
/**
* sql查询通用接口
* @param sql
* @param values
* @param e
* @return
*/
public List<Map<String,Object>> searchForMap(String sql, List<Object> values);
/**
* map型分页查询接口
* @param sql
* @param values
* @param pageBean
* @return
*/
public PageBean<Map<String,Object>> searchForMap(String sql, List<Object> values, PageBean<Map<String,Object>> pageBean);
//*******************************
//jdbc implements with jdbcsupport
//*******************************
}