package jnpf.storecertificatephoto.mapper;

import jnpf.base.mapper.SuperMapper;
import jnpf.model.warningnotice.po.FtbParamEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 基础参数Mapper
 */
public interface BaseParamMapper extends SuperMapper<FtbParamEntity> {

    /**
     * 根据参数键查询参数
     *
     * @param key 参数键
     * @return 基础参数
     */
    FtbParamEntity selectByKey(@Param("key") String key);

    /**
     * 根据参数键更新参数
     *
     * @param sourceKey 原参数键
     * @param entity    基础参数
     * @return 更新条数
     */
    int updateByKey(@Param("sourceKey") String sourceKey, @Param("entity") FtbParamEntity entity);

    /**
     * 新增参数
     *
     * @param entity 基础参数
     * @return 新增条数
     */
    int insertParam(@Param("entity") FtbParamEntity entity);

    /**
     * 批量新增参数
     *
     * @param entities 参数列表
     * @return 新增条数
     */
    int batchInsertParam(@Param("entities") List<FtbParamEntity> entities);

    /**
     * 批量按ID更新参数
     *
     * @param entities 参数列表
     * @return 更新条数
     */
    int batchUpdateById(@Param("entities") List<FtbParamEntity> entities);

    /**
     * 根据key递增参数值
     *
     * @param key 参数key
     * @param number 递增值
     * @return 影响行数
     */
    int incrementValueByKey(@Param("key") String key, @Param("number") Long number);

    /**
     * 根据key删除参数
     *
     * @param key 参数key
     * @return 影响行数
     */
    int deleteByKey(@Param("key") String key);

    /**
     * 根据type删除参数。not key
     *
     * @param type 参数type
     * @param notKey 不包含的key
     * @return 影响行数
     */
    int deleteByTypeNotKey(@Param("type") String type,@Param("notKey") String notKey);
}
