Skip to content

mitsumi-solutions-develop/mybatis-postgres-extension-types

Repository files navigation

mybatis-postgres-extension-types

Java Postgres Licence

supported

  • java version: 21

supported postgres extension types

  • Enum
  • Json
  • UUID

dependency

maven

<dependency>
    <groupId>io.github.mitsumi-solutions-develop</groupId>
    <artifactId>mybatis-postgres-extension-types</artifactId>
    <version>1.0.2</version>
</dependency>

usage for spring

    private final MybatisCustomTypeConfig customTypeConfig;

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> {
            var registry = configuration.getTypeHandlerRegistry();

            types(customTypeConfig.getJsonModelsPackage(), Class::isEnum).forEach(clazz ->
                registry.register(clazz, JsonTypeHandler.class)
            );

            types(customTypeConfig.getEnumerationsPackage()).forEach(clazz ->
                registry.register(clazz, EnumTypeHandler.class)
            );

            registry.register(UUIDTypeHandler.class);
        };
    }

    @SafeVarargs
    @SneakyThrows
    protected final List<Class<?>> types(String packageName, Function<Class<?>, Boolean>... ignored) {
        return  ClassPath.from(ClassLoader.getSystemClassLoader())
            .getAllClasses()
            .stream()
            .filter(clazz -> clazz.getPackageName().equalsIgnoreCase(packageName))
            .map(ClassPath.ClassInfo::load)
            .filter(clazz -> {
                if (ignored != null && ignored.length > 0) {
                    return Stream.of(ignored).noneMatch(f -> f.apply(clazz));
                }

                return true;
            })
            .collect(Collectors.toList());
    }

About

mybatis-postgres-extension-types

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages