{"id":199,"date":"2014-04-09T12:19:17","date_gmt":"2014-04-09T12:19:17","guid":{"rendered":"http:\/\/justmakeit.es\/?p=199"},"modified":"2014-04-09T12:26:42","modified_gmt":"2014-04-09T12:26:42","slug":"ibatis-y-hashmap","status":"publish","type":"post","link":"http:\/\/justmakeit.es\/?p=199","title":{"rendered":"iBatis y HashMap"},"content":{"rendered":"<p>Cuando se utiliza iBatis o MyBatis, como se llama actualmente el paquete, muchas veces resulta tedioso tener que crear clases que incluyan como atributos todos lo campos a recuperar de una query, para evitarlo hay una alternativa muy sencilla, que puede resultar un poco complicado encontrar.<\/p>\n<figure style=\"width: 350px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" alt=\"MyBatis logo\" src=\"http:\/\/3.bp.blogspot.com\/-HKtWXLIvvdk\/T6VWCexS-qI\/AAAAAAAAATo\/QmRUDiFjWd0\/s1600\/mybatis-superbird-small.png\" width=\"350\" height=\"88\" \/><figcaption class=\"wp-caption-text\">MyBatis logo<\/figcaption><\/figure>\n<p>La alternativa es crear un <em>java.util.HashMap<\/em> como <em>resultClass <\/em>y ejecutar la query con un <em>queryForList<\/em>. A continuaci\u00f3n incluyo un ejemplo lo m\u00e1s sencillo y claro posible.<\/p>\n<p>[pastacode provider=\u00bbmanual\u00bb lang=\u00bbmarkup\u00bb]<\/p>\n<pre><code>\r\n    &lt;resultMap id=\"myResultMap\"     \t\t\t\tclass=\"java.util.HashMap\"&gt;\r\n        &lt;result property=\"VAL1\"          column=\"CODE\" \/&gt;\r\n        &lt;result property=\"VAL2\"          column=\"DESCRIPTION\" \/&gt;\r\n        &lt;result property=\"VAL3\"          column=\"VALUE\" \/&gt;\r\n    &lt;\/resultMap&gt;\r\n<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p><strong>No <\/strong>es necesario que los nombres de las <em>property <\/em>coincidan con los nombres de las <em>column<\/em>.<\/p>\n<p>[pastacode provider=\u00bbmanual\u00bb lang=\u00bbsql\u00bb]<br \/>\n&lt;select id=\u00bbnombre-de-la-query\u00bb parameterClass=\u00bbjava.lang.Integer\u00bb resultMap=\u00bbmyResultMap\u00bb&gt;<br \/>\n    select<br \/>\n        campo1 as CODE,<br \/>\n        campo2 as DESCRIPTION,<br \/>\n        campo3 as VALUE<br \/>\n    from<br \/>\n        TABLE1<br \/>\n    where<br \/>\n        TABLE1.ID = #id#<br \/>\n&lt;\/select&gt;<br \/>\n[\/pastacode]<\/p>\n<p>Los nombres que se utilizan al definir las columnas del <em>resultMap<\/em>, tienen que coincidir con el resultado de la ejecuci\u00f3n de la query.<\/p>\n<p>[pastacode provider=\u00bbmanual\u00bb lang=\u00bbjava\u00bb]<\/p>\n<pre><code>List&lt;HashMap&gt; data = (List&lt;HashMap&gt;)sqlMap.queryForList(\"nombre-de-la-query\", id);\r\nfor( HashMap temp : data){\r\n    System.out.println((String)temp.get(\"VAL1\"));\r\n    System.out.println((String)temp.get(\"VAL2\"));\r\n    System.out.println((String)temp.get(\"VAL3\"));\r\n}\r\n<\/code><\/pre>\n<p>[\/pastacode]<\/p>\n<p>Para acceder a las propiedades, utilizaremos el nombre definido en el <em>resultMap <\/em>como <em>property<\/em>.<\/p>\n<p>Esta manera de recuperar informaci\u00f3n con iBatis nos permite realizar consultas complejas y utilizar objetos preexistentes para guardar o utilizar la informaci\u00f3n; aunque nos libera de la necesidad de crear las clases con los objetos ad-hoc para cada una de las consultas, lo que puede agilizar sensiblemente la construcci\u00f3n de las consultas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando se utiliza iBatis o MyBatis, como se llama actualmente el paquete, muchas veces resulta tedioso tener que crear clases &hellip; <a href=\"http:\/\/justmakeit.es\/?p=199\" class=\"btn btn-readmore\">Read More <span class=\"screen-reader-text\"> \u00abiBatis y HashMap\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,14],"tags":[29,30],"class_list":["post-199","post","type-post","status-publish","format-standard","hentry","category-java","category-programacion","tag-ibatis","tag-mybatis"],"_links":{"self":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=199"}],"version-history":[{"count":39,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/199\/revisions"}],"predecessor-version":[{"id":238,"href":"http:\/\/justmakeit.es\/index.php?rest_route=\/wp\/v2\/posts\/199\/revisions\/238"}],"wp:attachment":[{"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=199"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/justmakeit.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}