[英]How to return an Optional from MyBatis query
有什么方法可以让MyBatis返回Optional<MyClass>
实例而不是简单的MyClass
实例吗?
Create custom ObjectFactory like this: 创建自定义对象工厂,如下所示:
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);
}
}
}
And configure it to be used in mybatis.xml
: 并将其配置为在
mybatis.xml
:
<objectFactory type="my.company.project.OptionalAwareObjectFactory"/>
Since 3.5.0 Optional
is supported natively as fankai pointed out. 由于3.5.0
Optional
如原生支持fankai指出。
Mybatis supports Optional return type officially now since 3.5.0, refer to http://blog.mybatis.org/2019/01/mybatis-350-released.html 自3.5.0起,Mybatis现在正式支持Optional返回类型,请参阅http://blog.mybatis.org/2019/01/mybatis-350-released.html
Not sure how Roman's answer worked ... it might work in earlier version of Mybatis, as the method signature suggests, but apparently doesn't work with latest versions. 不确定Roman的答案如何工作……如方法签名所示,它可能在Mybatis的早期版本中有效,但显然不适用于最新版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.