2009-03-24 7 views
4

J'utilise actuellement ibatis pour retourner des pojos et tout fonctionne très bien.
Ma question est: Je dois retourner 1 ligne d'une table, tout comme 3 champs, et je ne veux pas créer un pojo pour cela. Je veux juste lancer la requête et obtenir les 3 valeurs. Y at-il un moyen facile de le faire sans créer un objet java spécial juste pour cela?ibatis return values ​​

+0

Existe-t-il un moyen d'utiliser queryForList() et de retourner un HashMap? Ce serait ma seule rangée sans un pojo? J'ai fait les googlesearhs et essayé des trucs, mais je pense que mon xml n'est pas écrit. – Nick

Répondre

4

Dans IBatis.NET, nous utilisons Hashtable lorsque nous avons besoin de plus d'une valeur dans une requête.

<resultMap id="ResultMap1" class="Hashtable"> 
     <result column="FirstName" property="FirstName" type="string" /> 
      <!-- shows up as "FirstName" in the Hashtable --> 
     <result column="LastName" property="LastName" type="string" /> 
      <!-- shows up as "LastName" in the Hashtable --> 
</resultMap> 
+0

C'est un peu ce que je suppose. Est-ce que ceci est juste défini dans resultClass = "HashMap" ou quelque chose comme ça? J'ai utilisé resultset = "int", mais cela ne fonctionne que pour une valeur, et j'ai besoin de trois. – Nick

+0

Première erreur: L'attribut "type" doit être déclaré pour le type d'élément "result". J'ai enlevé le type = "chaîne" de votre élément pour résoudre ce problème. La deuxième erreur était Hashtable n'a pas été reconnu, a changé HashTable en "java.util.HashMap" pour corriger cela ... – Nick

+0

Maintenant, il ne me donne pas d'erreurs jusqu'à ce que j'ajoute un select dans le mélange. Puis-je obtenir "Impossible d'initialiser la classe Cause:. Java.lang.ClassNotFoundException: ResultMap1" [code] [/ code] – Nick

0

Je ne connais aucune méthode pour faire ce que vous demandez; l'objectif spécifique d'iBATIS est d'automatiser la cartographie des modèles relationnels en classes. Je ne suis pas sûr de ce que vous essayez de faire, mais si vous avez des données significatives, vous devriez être en mesure de mapper à un objet de quelque sorte, même si l'objet sera de courte durée. Je devine que vous avez besoin d'une logique basée sur les valeurs récupérées par votre requête? Si c'est le cas, créez un nouveau POJO, mappez la requête et déplacez la logique dans votre nouveau POJO au lieu de l'endroit où il se trouve actuellement. Cela rendra le code beaucoup plus propre et plus facile à maintenir.

Si vous essayez simplement de récupérer des données brutes sans les associer à une classe, vous devrez probablement revoir votre conception.

(je sais que ce n'est pas la réponse que vous recherchez... Excusez-moi.)

+0

Ce n'était pas la réponse que je voulais, mais merci. Je fais affaire avec une base de données existante afin que le contrôle total de la conception ne soit pas chose à faire. – Nick

+0

Pour la plupart, 99% du projet a ou aura des pojos mappés à partir de la base de données, mais étant donné la base de données, il y a beaucoup de requêtes bs que j'aimerais faire sans créer beaucoup de pojos bs juste pour ça . – Nick

+0

Heureux d'avoir reçu la réponse de Binoj Antony. Je me sentais comme si j'étais ennuyeux prêchant en écrivant ma réponse. . . J'avais commencé à écrire «je ne peux pas imaginer un cas où» et ensuite pensé au code hérité sur lequel je travaille ;-) – Ickster

0

Vous pouvez affecter les résultats à un java.util.HashMap (LinkedHashMap si vous voulez préserver l'ordre sur le terrain).