2011-10-24 2 views
0

J'ai la situation suivante. ceci est ma déclaration mybatis sql:Utilisation de MyBatis avec la fonction Oracle XMLType "existsNode()"

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

donc quand j'appelle la méthode de sélection de la classe wrapper et définissez le paramètre de chaîne avec une expression XPath, le message d'erreur suivant apparaît:

Missing IN or OUT parameter at index:: 1 

Est-il impossible pour mybatis de faire une instruction préparée avec la méthode existNode d'Oracle?

merci d'avance!

Répondre

0

C'est possible. Vous ne devriez pas coder le? dans votre fichier XML MyBatis. MyBatis a un langage spécial pour SQL dynamique, je suggère de lire le MyBatis 3 User Guide.

Changer votre carte sql,

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

Il pourrait ne pas être # {id}, cela dépend de la façon dont vous appelez sélectionnez de mybatis. Par exemple, vous utilisez peut-être la balise @Param.

Questions connexes