- java version: 21
- Enum
- Json
- UUID
<dependency>
<groupId>io.github.mitsumi-solutions-develop</groupId>
<artifactId>mybatis-postgres-extension-types</artifactId>
<version>1.0.2</version>
</dependency>
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());
}