繁体   English   中英

如何从MyBatis查询返回可选参数

[英]How to return an Optional from MyBatis query

有什么方法可以让MyBatis返回Optional<MyClass>实例而不是简单的MyClass实例吗?

Mybatis pre 3.5.0

创建自定义对象工厂,如下所示:

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指出。

自3.5.0起,Mybatis现在正式支持Optional返回类型,请参阅http://blog.mybatis.org/2019/01/mybatis-350-released.html

不确定Roman的答案如何工作……如方法签名所示,它可能在Mybatis的早期版本中有效,但显然不适用于最新版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM