加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Mybatis If语句使用include属性

发布时间:2020-12-15 02:12:59 所属栏目:Java 来源:网络整理
导读:我正在尝试在Mybatis中创建一个通用SQL包含,它将应用给定特定值的比较器.我们的想法是在几个映射器中重用这个sql代码段.我遇到的问题是在我的include中的if语句中使用字符串替换. 目前xml看起来像这样: select id="get" parameterType="ServiceModelQueryHe
我正在尝试在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,因为$不是有效的第一个字符.

有没有办法在OGNL表达式中引用sql片段的属性?

解决方法

看看 mybatis docs.条件语句不需要#,$样式引用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读