package com.zkqy.system.mapper;

import com.zkqy.system.entity.CommonEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface CommonMapper {

    /**-------------------------mysql-----------------------------*/

    /**
     * 查询列表
     */
    List<CommonEntity> selectList(@Param("tableName") String tableName, @Param("conditions") Map<String, Object> conditions);

    /**
     * 查询列表
     * @param tableName
     * @param conditions
     * @return
     */
    List<Map<String,Object>> selectListMap(@Param("tableName") String tableName, @Param("conditions") Map<String, Object> conditions);

    /**
     * 获取详情数据
     * @param tableName
     * @param conditions
     * @return
     */
    CommonEntity selectOne(@Param("tableName") String tableName, @Param("conditions") Map<String, Object> conditions);


    /**
     * 批量新增
     */
    int batchInsert(@Param("fieldNames") Set<String> fieldNames, @Param("tableName") String tableName, @Param("fieldValues") List<Map<String, Object>> fieldValues);

    /**
     * 批量删除
     */
    int batchDelete(@Param("tableName") String tableName, @Param("conditions") Map<String, Object> conditions);

    /**
     * 修改
     */
    int edit(@Param("fields") Map<String, Object> fields, @Param("tableName") String tableName, @Param("conditions") Map<String, Object> conditions);
    /**
     * 执行动态sql
     *
     * @param Sql     执行的sql
     * @return
     */
    List<CommonEntity> queryTableList(String Sql);

    /** 表
     * 查询下拉框列表
     */
    List<Map<String,Object>> selectDropDownList(@Param("tableName")String tableName,@Param("fieldKey") String fieldKey,@Param("fieldName") String fieldName, @Param("conditions") Map<String, Object> conditions);

    List<Map<String,Object>> selectDropDownListNotWhere(@Param("tableName")String tableName);


    /** 字典
     * 查询下拉框列表
     */
    List<Map<String,Object>> selectDropDownListByDict(String dictType);

    /**
     * 查询模板库建表语句
     * @param tableName 表名
     * @return
     */
    Map<String, String> selectTableSql(@Param("tableName") String tableName);

    /**
     * 执行sql
     * @param sql sql语句
     * @return
     */
    void executeSql(String sql);

}
