package com.brilliance.mda.support.mybatis.interceptor;

import org.apache.ibatis.cache.CacheKey;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;

import java.util.Map;

public interface ParameterProcessor {


    /**
     * 已拦截到Mybatis的ParamMpa并转化为Map类型，如需要添加额外的参数，可
     * @param ms
     * @param paramMap
     * @param boundSql
     * @param pageKey
     * @return
     */
    Object processCustomizedParameter(MappedStatement ms, Map<String, Object> paramMap, BoundSql boundSql, CacheKey pageKey) ;

    /**
     * 提前检查是否需要拦截并对SQL 参数进行处理。
     * @return
     */
    default boolean checkParameter(){
        return true;
    }

}
