package com.cool.bang.common.base;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * Base Mapper Interface (基础映射接口类)
 *
 * @author PeiZhi Guo
 * 2021-2-27 13:30
 */
public interface BaseMapper<T> {

    /**
     * 查询（根据映射对象）
     *
     * Param param
     * Return List
     */
    List<T> selectByParam(T param);

    /**
     * 查询（根据集合条件）
     *
     * Param map
     * Return List
     */
    List<T> selectByMap(Map<String, Object> map);

    /**
     * 主键查询一条记录
     *
     * Param id
     * Return T
     */
    T selectById(Serializable id);

    /**
     * 插入一条记录
     *
     * Param param
     * Return int
     */
    int insert(T param);

    /**
     * 批量插入记录
     *
     * Param params
     * Return int
     */
    int insertBatch(List<T> params);

    /**
     * 更新一条记录
     *
     * Param param
     * Return int
     */
    int update(T param);

    /**
     * 批量更新记录
     *
     * Param params
     * Return int
     */
    int updateBatch(List<T> params);

    /**
     * 状态更新
     *
     * Param businessNumber
     * Param status
     * Return int
     */
    int updateStatus(Map<String, Object> map);

    /**
     * 删除一条记录
     *
     * Param id
     * Return int
     */
    int delete(Serializable id);

    /**
     * 批量删除
     *
     * Param ids
     * Return int
     */
    int deleteBatch(Collection<? extends Serializable> ids);


}
