Skip to content

DialectConfiguration

GangCheng edited this page Feb 6, 2025 · 1 revision

Dialect Configuration

  • Built-in dialects are located in package.
  • You can define a customized PlaceholderDialect then register it into R2dbcMybatisConfiguration
  • The placeholder dialect's process is located in DefaultPlaceholderFormatter.
  • More detail see the source code please.

Clickhouse Dialect ⬇️

public class ClickhousePlaceholderDialect implements NamePlaceholderDialect {

    /**
     * The dialect name.
     */
    public static final String DIALECT_NAME = "Clickhouse";

    private static final Pattern PROPERTY_PATTERN = Pattern.compile("\\.|[^@:;/$\\d\\w_]");

    @Override
    public String name() {
        return DIALECT_NAME;
    }

    @Override
    public String getMarker() {
        return ":Ch_";
    }

    @Override
    public String propertyNamePostProcess(String propertyName) {
        if (Objects.isNull(propertyName) || propertyName.length() == 0) {
            return propertyName;
        }
        return PROPERTY_PATTERN.matcher(propertyName).replaceAll("_");
    }

}

then register it into R2dbcMybatisConfiguration:

R2dbcMybatisConfiguration r2dbcMybatisConfiguration = ...
r2dbcMybatisConfiguration.getPlaceholderDialectRegistry().register(new ClickhousePlaceholderDialect());

in spring application:

@Bean
public R2dbcMybatisConfigurationCustomizer r2dbcMybatisConfigurationCustomizer(){
    return r2dbcMybatisConfiguration -> r2dbcMybatisConfiguration.getPlaceholderDialectRegistry()
            .register(new ClickhousePlaceholderDialect());
}
Clone this wiki locally