@Override
    public Object intercept(final Invocation invocation) throws Throwable {
        Object[] args = invocation.getArgs();
        MappedStatement ms = (MappedStatement) args[0];
        Object parameter = args[1];
        Executor executor = (Executor) invocation.getTarget();
        for (Class<?> superClass = parameter.getClass(); superClass != Object.class; superClass = superClass.getSuperclass()) {
            Arrays.stream(superClass.getDeclaredFields())
                    .filter(f -> matchParam(parameter, f))
                    .forEach(f -> ReflectUtils.setFieldValue(parameter, f.getName(), new Timestamp(System.currentTimeMillis())));
        }

        return executor.update(ms, parameter);
    }
@Test
    public void interceptTest() throws SQLException {
        final OpenGaussSqlUpdateInterceptor openGaussSqlUpdateInterceptor = new OpenGaussSqlUpdateInterceptor();
        final Invocation invocation = mock(Invocation.class);
        Object[] args = new Object[2];
        args[0] = mock(MappedStatement.class);
        args[1] = mock(RuleData.class);
        final Executor executor = mock(Executor.class);
        when(invocation.getTarget()).thenReturn(executor);
        when(invocation.getArgs()).thenReturn(args);
        when(executor.update(any(), any())).thenReturn(1);
        Assertions.assertDoesNotThrow(() -> openGaussSqlUpdateInterceptor.intercept(invocation));
    }