/**
* <p>
* Mapper 繼承該接口後,無需編寫 mapper.xml 文件,即可獲得CRUD功能
* </p>
* <p>
* 這個 Mapper 支持 id 泛型
* </p>
*
* @author hubin
* @Date 2016-01-23
*/
public interface BaseMapper<T> {
/**
* <p>
* 插入一條記錄
* </p>
*
* @param entity
* 實體對象
* @return int
*/
Integer insert(T entity);
/**
* <p>
* 根據 ID 刪除
* </p>
*
* @param id
* 主鍵ID
* @return int
*/
Integer deleteById(Serializable id);
/**
* <p>
* 根據 columnMap 條件,刪除記錄
* </p>
*
* @param columnMap
* 表字段 map 對象
* @return int
*/
Integer deleteByMap(@Param("cm") Map<String, Object> columnMap);
/**
* <p>
* 根據 entity 條件,刪除記錄
* </p>
*
* @param wrapper
* 實體對象封裝操作類(可以爲 null)
* @return int
*/
Integer delete(@Param("ew") Wrapper<T> wrapper);
/**
* <p>
* 刪除(根據ID 批量刪除)
* </p>
*
* @param idList
* 主鍵ID列表
* @return int
*/
Integer deleteBatchIds(List<? extends Serializable> idList);
/**
* <p>
* 根據 ID 修改
* </p>
*
* @param entity
* 實體對象
* @return int
*/
Integer updateById(T entity);
/**
* <p>
* 根據 whereEntity 條件,更新記錄
* </p>
*
* @param entity
* 實體對象
* @param wrapper
* 實體對象封裝操作類(可以爲 null)
* @return
*/
Integer update(@Param("et") T entity, @Param("ew") Wrapper<T> wrapper);
/**
* <p>
* 根據 ID 查詢
* </p>
*
* @param id
* 主鍵ID
* @return T
*/
T selectById(Serializable id);
/**
* <p>
* 查詢(根據ID 批量查詢)
* </p>
*
* @param idList
* 主鍵ID列表
* @return List<T>
*/
List<T> selectBatchIds(List<? extends Serializable> idList);
/**
* <p>
* 查詢(根據 columnMap 條件)
* </p>
*
* @param columnMap
* 表字段 map 對象
* @return List<T>
*/
List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
/**
* <p>
* 根據 entity 條件,查詢一條記錄
* </p>
*
* @param entity
* 實體對象
* @return T
*/
T selectOne(@Param("ew") T entity);
/**
* <p>
* 根據 Wrapper 條件,查詢總記錄數
* </p>
*
* @param wrapper
* 實體對象
* @return int
*/
Integer selectCount(@Param("ew") Wrapper<T> wrapper);
/**
* <p>
* 根據 entity 條件,查詢全部記錄
* </p>
*
* @param wrapper
* 實體對象封裝操作類(可以爲 null)
* @return List<T>
*/
List<T> selectList(@Param("ew") Wrapper<T> wrapper);
/**
* <p>
* 根據 Wrapper 條件,查詢全部記錄
* </p>
*
* @param wrapper
* 實體對象封裝操作類(可以爲 null)
* @return List<T>
*/
List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> wrapper);
/**
* <p>
* 根據 Wrapper 條件,查詢全部記錄
* </p>
*
* @param wrapper
* 實體對象封裝操作類(可以爲 null)
* @return List<Object>
*/
List<Object> selectObjs(@Param("ew") Wrapper<T> wrapper);
/**
* <p>
* 根據 entity 條件,查詢全部記錄(並翻頁)
* </p>
*
* @param rowBounds
* 分頁查詢條件(可以爲 RowBounds.DEFAULT)
* @param wrapper
* 實體對象封裝操作類(可以爲 null)
* @return List<T>
*/
List<T> selectPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);
/**
* <p>
* 根據 Wrapper 條件,查詢全部記錄(並翻頁)
* </p>
*
* @param rowBounds
* 分頁查詢條件(可以爲 RowBounds.DEFAULT)
* @param wrapper
* 實體對象封裝操作類
* @return List<Map<String, Object>>
*/
List<Map<String, Object>> selectMapsPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);
}