使用MyBatis和Oracle XMLType函数“existsNode()”

时间:2011-10-24 16:00:27

标签: oracle xpath mybatis

我有以下情况。 这是我的mybatis sql语句:

<select id="select" parameterType="String" resultMap="urlList">
    select 
                x.t002_id
    from
                 t002_metadata x  
    where
        existsNode(x.t002_xml, ?) = 1;
</select>

所以当我从包装器类调用select方法并使用xpath表达式设置string参数时,会出现以下错误消息:

Missing IN or OUT parameter at index:: 1

mybatis不可能使用oracle中的existNode方法编写预处理语句吗?

提前感谢!

1 个答案:

答案 0 :(得分:0)

有可能。你不应该编码?进入你的MyBatis xml。 MyBatis有动态sql的特殊语言,我建议阅读MyBatis 3 User Guide

更改您的sql地图,

<select id="select" parameterType="String" resultMap="urlList">
    select 
                x.t002_id
    from
                 t002_metadata x  
    where
        existsNode(x.t002_xml, #{id}) = 1;
</select>

它可能不是#{id},这取决于你如何从Mybatis调用select。例如,您可能正在使用@Param标记。