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.条件语句不需要#,$样式引用.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |