private Object doParameterHandler(ParameterHandler parameterHandler, Invocation invocation) throws Throwable {
        MetaObject metaResultSetHandler = MetaObject.forObject(parameterHandler, DEFAULT_OBJECT_FACTORY,
                DEFAULT_OBJECT_WRAPPER_FACTORY, REFLECTOR_FACTORY);
        MappedStatement mappedStatement = (MappedStatement) metaResultSetHandler.getValue("mappedStatement");
        String fullMethodName = mappedStatement.getId();
        if (!MultiTenantQueryFilter.isMultiTenantQuery(fullMethodName.split(InlongConstants.UNDERSCORE)[0])) {
            return invocation.proceed();
        }
        this.setExpressionCache();
        Object parameterObject = metaResultSetHandler.getValue("parameterObject");
        BoundSql boundSql = (BoundSql) metaResultSetHandler.getValue("boundSql");
        Object newParams = makeNewParameters(parameterObject, boundSql.getParameterMappings());
        this.setTenantMapping(boundSql.getParameterMappings());
        metaResultSetHandler.setValue("parameterObject", newParams);
        return invocation.proceed();
    }
This interceptor intercept those queries annotated by {@link MultiTenantQuery}.

<p>The main idea of MultiTenantInterceptor is that developer define sql template
support multiple tenant in mapper.xml, but no need to pass the tenant explicitly in mapper.java.</p>

<p>MultiTenantInterceptor will insert <strong>tenant</strong> into the parameter maps in
{@link Executor} and {@link ParameterHandler} stages.</p>
inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/interceptor/MultiTenantInterceptor.java