package com.sundot.airport.system.mapper;

import com.sundot.airport.system.domain.SysDynamicSql;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

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

/**
 * 动态sql执行configMapper接口
 *
 * @author ruoyi
 * @date 2025-06-20
 */
public interface SysDynamicSqlMapper
{
    /**
     * 查询动态sql执行config
     *
     * @param id 动态sql执行config主键
     * @return 动态sql执行config
     */
    public SysDynamicSql selectSysDynamicSqlById(Long id);

    /**
     * 查询动态sql执行config列表
     *
     * @param sysDynamicSql 动态sql执行config
     * @return 动态sql执行config集合
     */
    public List<SysDynamicSql> selectSysDynamicSqlList(SysDynamicSql sysDynamicSql);

    /**
     * 新增动态sql执行config
     *
     * @param sysDynamicSql 动态sql执行config
     * @return 结果
     */
    public int insertSysDynamicSql(SysDynamicSql sysDynamicSql);

    /**
     * 修改动态sql执行config
     *
     * @param sysDynamicSql 动态sql执行config
     * @return 结果
     */
    public int updateSysDynamicSql(SysDynamicSql sysDynamicSql);

    /**
     * 删除动态sql执行config
     *
     * @param id 动态sql执行config主键
     * @return 结果
     */
    public int deleteSysDynamicSqlById(Long id);

    /**
     * 批量删除动态sql执行config
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysDynamicSqlByIds(Long[] ids);

    SysDynamicSql selectBySqlKey(String sqlKey);

    /**
     * 动态执行sql
     * @param sql
     * @param params
     * @return
     */
    @Select("${sql}")
    List<Map<String, Object>> executeDynamicSelect(@Param("sql") String sql,
                                                   @Param("params") Map<String, Object> params);

}
