Correspondance avec le dictionnaire avec iBATIS
-
02-07-2019 - |
Question
Étant donné une déclaration simple, telle que:
<statement id="SelectProducts" resultMap="???">
SELECT * FROM Products
</statement>
Est-il possible d'obtenir une liste d'objets de dictionnaire où les clés sont les noms de colonnes? c'est à dire.
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 gérer un nombre quelconque de colonnes / noms de colonnes sans mapper des propriétés spécifiques sur une classe.
Je me rends compte que l'exemple ici échouerait puisqu'un jeu de résultats peut avoir des noms de colonnes dupliqués (ou nuls). J'ai pensé à une classe de résultats contenant une liste indexée de paires clé-valeur. L'important est de conserver les informations de la colonne quelque part.
La solution
Vous pouvez le faire en définissant l'attribut de classe sur HashTable dans la configuration de resultMap. Plus de détails disponibles ici .