2009-11-27 7 views
2

J'utilise actuellementComment mapper une fonction de package stockée dans iBatis?

<parameterMap class="map" id="param1"> 
    <parameter property="result" jdbcType="BOOLEAN" javaType="boolean" mode="OUT"/> 
    <parameter property="arg1" jdbcType="VARCHAR" mode="IN"/> 
    <parameter property="resultCode" jdbcType="INTEGER" javaType="int" mode="OUT"/> 
</parameterMap> 

<procedure id="contAvail" parameterMap="param1"> 
    <![CDATA[ 
     { ? = call pkg.func(?,?)} 
    ]]> 
</procedure> 

ce qui manque?

Répondre

0

Il s'avère qu'il n'y a rien de mal avec le code ci-dessus. Cela fonctionne si nous changeons le type de données de retour de booléen à n'importe quoi d'autre. Il semble que booléen n'est pas supporté correctement.

De même que Jim a légitimement suggéré, CDATA n'est pas imp. Cela fonctionne avec ou sans.

0

Vous avez deux paramètres dans votre CALL mais un paramètreMap avec trois paramètres. Vous avez un résultat mais pas de resultMap.

Vous ne savez pas si le CDATA fait mal, mais il ne devrait pas être nécessaire. Pour plus de détails, voir le online help. Consultez également this et this.

0

Une chose importante à noter est que ibatis renvoie le résultat dans la carte des paramètres d'entrée même pour l'appel de fonction. Dans ce cas, param1 contiendra le résultat de l'appel de la fonction (et null est retourné dans la méthode java queryForObject() ..)