Есть ли способ заставить MyBatis возвращать экземпляр Optional<MyClass>, а не просто экземпляр MyClass?




Создайте собственный ObjectFactory следующим образом:
class OptionalAwareObjectFactory extends DefaultObjectFactory {
public Object create(Class type, List<Class> constructorArgTypes, List<Object> constructorArgs) {
if (Optional.class.isAssignableFrom(type)) {
return Optional.fromNullable(Iterables.getOnlyElement(constructorArgs));
} else {
return super.create(type, constructorArgTypes, constructorArgs);
}
}
}
И настройте его для использования в mybatis.xml:
<objectFactory type = "my.company.project.OptionalAwareObjectFactory"/>
Начиная с 3.5.0, Optional поддерживается изначально, как указано в фанкай.
Mybatis официально поддерживает дополнительный тип возвращаемого значения, начиная с версии 3.5.0, см. http://blog.mybatis.org/2019/01/mybatis-350-released.html
Не уверен, как работал ответ Романа ... он может работать в более ранней версии Mybatis, как следует из сигнатуры метода, но, по-видимому, не работает с последними версиями.
Фантастический. Спасибо тебе за это.