如何从MyBatis查询返回Optional

Gor*_*dyB 2 java mybatis spring-mybatis

有没有办法让MyBatis返回一个Optional<MyClass>实例而不仅仅是一个MyClass实例?

Rom*_*val 6

像这样创建自定义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);
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

并将其配置为用于mybatis.xml:

 <objectFactory type="my.company.project.OptionalAwareObjectFactory"/>
Run Code Online (Sandbox Code Playgroud)