2008-09-22 6 views
0

fait une déclaration simple, comme:Mapping dictionnaire avec iBATIS

<statement id="SelectProducts" resultMap="???"> 
    SELECT * FROM Products 
</statement> 

Est-il possible d'obtenir une liste d'objets dictionnaire dont les clés sont les noms de colonnes? ie.

var list = Mapper.QueryForList<IDictionary<string,string>>("SelectProducts", null); 

IDictionary<string, string> dict = list[0]; 
// dict["id"] == "1" 
// dict["name"] == "Some Product Name" 
// dict["price"] == "$9.99" 
// etc. 

Je voudrais généraliser le résultat d'une requête pour traiter un certain nombre de colonnes/noms de colonnes sans correspondance à des propriétés spécifiques sur une certaine classe.

Je réalise que l'exemple ici échouerait car un ensemble de résultats peut avoir des noms de colonne en double (ou nul). J'ai pensé à une classe de résultats qui contient une liste indexée de paires clé-valeur. La chose clé ici est de conserver l'information de la colonne quelque part.

Répondre

1

Pour ce faire, définissez l'attribut de classe sur HashTable dans la configuration resultMap. Plus de détails disponibles here.