我正在尝试在Mybatis中创建一个通用sql包含,它将应用给定特定值的比较器.我们的想法是在几个映射器中重用这个sql代码段.我遇到的问题是在我的include中的if语句中使用字符串替换.
目前xml看起来像这样:
<select id="get" parameterType="ServiceModelQueryHelper" resultMap="ServiceRecordMap">
SELECT * from service
<if test="name.isApplicable()">
WHERE service.name
<include refid=comparatorMapper>
<property name="comparator" value="${name.comparator}"/>
<property name="value" value="${name.value}"/>
</include>
</if>
</select>
<sql id="comparatorMapper">
<if test="${comparator} == 'EQUALS'">
= ${value}
</if>
<if test="${comparator} == 'CONTAINS'">
~ ${value}
</if>
</sql>
当在测试中使用${comparator}时,在字符串替换发生之前评估OGNL表达式,从而导致ParseException,因为$不是有效的第一个字符.
解决方法:
看看mybatis docs.条件语句不需要#,$样式引用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。