Java MyBatis XML中的Apache CollectionUtils exist方法

Java MyBatis XML中的Apache CollectionUtils exist方法,java,mybatis,spring-mybatis,Java,Mybatis,Spring Mybatis,在MyBatis XML中尝试以下代码时出错。这是我选择查询的一部分, 这会拉高水果价格。水果名称应该是苹果,它应该属于水果列表 <if test="@org.apache.commons.collections.CollectionUtils@exists(param.getFruitList(), n -> n.equals('APPLE'))"> tbl.price </if> 待定价格 下面是我得到的错误 调用@hand

在MyBatis XML中尝试以下代码时出错。这是我选择查询的一部分, 这会拉高水果价格。水果名称应该是苹果,它应该属于水果列表

<if test="@org.apache.commons.collections.CollectionUtils@exists(param.getFruitList(), n -> n.equals('APPLE'))">
     tbl.price
 </if>

待定价格
下面是我得到的错误


调用@handleDefaultException方法:由以下原因引起:org.mybatis.spring.MyBatisSystemException:嵌套异常为org.apache.ibatis.builder.BuilderException:计算表达式'@org.apache.commons.collections'时出错。CollectionUtils@exists())'. 原因:org.apache.ibatis.ognl.ExpressionSyntaxException:格式错误的ognl表达式:@org.apache.commons.collections。CollectionUtils@exists

我的理解是MyBatis的XML表达式解析器无法处理lambdas/方法引用。您可以尝试创建一个helper方法,比如

public static boolean helper(List<String> l) {
    return CollectionUtils.exists(l, "APPLE"::equals);
}
公共静态布尔帮助器(列表l){
return CollectionUtils.exists(l,“苹果”::等于);
}
然后在XML中引用它:

<if test="@some.package.Utils@helper(param.getFruitList())">
     tbl.price
</if>

待定价格

我的理解是MyBatis的XML表达式解析器无法处理lambdas/方法引用。您可以尝试创建一个helper方法,比如

public static boolean helper(List<String> l) {
    return CollectionUtils.exists(l, "APPLE"::equals);
}
公共静态布尔帮助器(列表l){
return CollectionUtils.exists(l,“苹果”::等于);
}
然后在XML中引用它:

<if test="@some.package.Utils@helper(param.getFruitList())">
     tbl.price
</if>

待定价格
OGNL。如果条件真的那么简单,您可以编写
param.getFruitList().contains('APPLE')
可能工作(未测试)。OGNL。如果条件真的那么简单,您可以编写
param.getFruitList().contains('APPLE')
可能有效(未测试)。