Как вернуть Необязательный запрос из MyBatis - PullRequest
0 голосов
/ 07 мая 2018

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

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Mybatis официально поддерживает опциональный тип возврата, начиная с 3.5.0, см. http://blog.mybatis.org/2019/01/mybatis-350-released.html

Не уверен, как работал ответ Романа ... он может работать в более ранней версии Mybatis, как предполагает подпись метода, но, очевидно, не работает с последними версиями.

0 голосов
/ 07 мая 2018

Mybatis pre 3.5.0

Создать пользовательский 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"/>

Mybatis 3.5.0 +

Поскольку 3.5.0 Optional поддерживается изначально, как указано fankai .

...