(转)ibatis Tips 之 java.util.Map作为parameterClass跟resultClass
(转)ibatis Tips 之 java.util.Map作为parameterClass和resultClass!--use Map type as parameterClass--
(转)ibatis Tips 之 java.util.Map作为parameterClass和resultClass
<!--use Map type as parameterClass--><select id="getProduct-Map" parameterresultMap="get-product-result"><![CDATA[select * from t_productwhere prd_id=#id# and prd_description=#description#]]></select>?DAO层:
/** * java.util.Map作为parameterClass */public Product getProductMap(Map map) throws SQLException {init();Product product = (Product)sqlMapClient.queryForObject("getProduct-Map", map);return product;}?Test类:
public void getProductMap() throws SQLException{Map map = new HashMap();map.put("id", new Integer(1));map.put("description", "basketball");Product product = productDao.getProductMap(map);System.out.println(product);}?结果:
id:1
description:basketball
price206.99
?
?
2.Map作为resultClass
映射文件:
<resultMap id="get-product-map" column="prd_id"/><result property="description" column="prd_description"/><result property="price" column="prd_price"/></resultMap><!--START use Map type as resultClass,MUST use java.util.HashMap instead java.util.Map--><select id="getProdcut-MapResult" resultresultMap="get-product-map"><![CDATA[select * from t_product]]></select><!-- END -->?DAO层:
/** * java.util.Map作为resultClass */public List getProductMapResult() throws SQLException {init();List list = sqlMapClient.queryForList("getProdcut-MapResult");return list;}public List getProductUseMapByResultMap() throws SQLException {init();List list = sqlMapClient.queryForList("getProductUseMap-resultMap");return list;}?Test类:
public void getProductMapResult() throws SQLException{Map map = null;List list = productDao.getProductMapResult();for(Iterator it=list.iterator(); it.hasNext();) {//List里存放的是java.util.Map类型Object obj = (Object)it.next();System.out.println(obj.getClass());System.out.println(obj);}}public void getProductUseMapByResultMap() throws SQLException {Map map = null;List list = productDao.getProductUseMapByResultMap();for(Iterator it=list.iterator(); it.hasNext();) {//List里存放的是java.util.Map类型Object obj = (Object)it.next();System.out.println(obj.getClass());System.out.println(obj);}}?结果:
class java.util.HashMap
{prd_id=1, prd_price=206.99, prd_description=basketball}
class java.util.HashMap
{prd_id=2, prd_price=106.99, prd_description=football}
class java.util.HashMap
{price=206.99, description=basketball, id=1}
class java.util.HashMap
{price=106.99, description=football, id=2}
?
?
注意: Map作为resultClass时,必须指定具体的实现类,比如java.util.HashMap,否则会报错
Caused by: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate result class.? Cause: java.lang.InstantiationException: java.util.Map
?
转自:http://xulongfa.iteye.com/blog/429616
?