Mapeamento de dicionário com iBATIS
-
02-07-2019 - |
Pergunta
Dada uma declaração simples, tais como:
<statement id="SelectProducts" resultMap="???">
SELECT * FROM Products
</statement>
É possível obter uma lista de objetos do dicionário onde as chaves são os nomes das colunas? 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.
Eu gostaria de generalizar o resultado de uma consulta para lidar com qualquer número de colunas nomes / coluna sem mapeamento para propriedades específicas em alguma classe.
Eu percebo o exemplo aqui seria um fracasso uma vez que um conjunto de resultados pode ter duplicado (ou nulos) os nomes das colunas. Já pensou em uma classe resultado que mantém uma lista indexada de pares chave-valor. O importante aqui é manter a algum lugar informação da coluna.
Solução
Você pode fazer isso definindo o atributo de classe para HashTable na configuração resultMap. Mais detalhes disponíveis aqui .