Mappatura al dizionario con iBATIS
-
02-07-2019 - |
Domanda
Data una dichiarazione semplice, come ad esempio:
<statement id="SelectProducts" resultMap="???">
SELECT * FROM Products
</statement>
È possibile ottenere un elenco di oggetti del dizionario in cui le chiavi sono i nomi delle colonne? vale a 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.
Vorrei generalizzare il risultato di una query per gestire un numero qualsiasi di nomi di colonne / colonne senza mappare proprietà specifiche di una classe.
Mi rendo conto che l'esempio qui fallirebbe poiché un set di risultati potrebbe avere nomi di colonna duplicati (o null). Ho pensato a una classe di risultati che contiene un elenco indicizzato di coppie chiave-valore. La cosa chiave qui è conservare le informazioni sulla colonna da qualche parte.
Soluzione
Puoi farlo impostando l'attributo class su HashTable nella configurazione di resultMap. Maggiori dettagli disponibili qui .