@Override
    public Collection<ParameterRewriter> getParameterRewriters() {
        Collection<ParameterRewriter> result = new LinkedList<>();
        addParameterRewriter(result, new EncryptAssignmentParameterRewriter(encryptRule));
        addParameterRewriter(result, new EncryptPredicateParameterRewriter(encryptRule));
        addParameterRewriter(result, new EncryptInsertValueParameterRewriter(encryptRule));
        addParameterRewriter(result, new EncryptInsertOnDuplicateKeyUpdateValueParameterRewriter(encryptRule));
        return result;
    }
@Test
    void assertGetParameterRewritersWhenPredicateIsNeedRewrite() {
        EncryptRule encryptRule = mock(EncryptRule.class, RETURNS_DEEP_STUBS);
        when(encryptRule.findEncryptTable("t_order").isPresent()).thenReturn(true);
        SelectStatementContext sqlStatementContext = mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
        when(sqlStatementContext.getTablesContext().getTableNames()).thenReturn(Collections.singleton("t_order"));
        Collection<ParameterRewriter> actual = new EncryptParameterRewriterBuilder(
                encryptRule, DefaultDatabase.LOGIC_NAME, Collections.singletonMap("test", mock(ShardingSphereSchema.class)), sqlStatementContext, Collections.emptyList()).getParameterRewriters();
        assertThat(actual.size(), is(1));
        assertThat(actual.iterator().next(), instanceOf(EncryptPredicateParameterRewriter.class));
    }