标签:mybatis3 collection resultmap
今天在CSDN上看到一个同学在问一个mybatis的问题,所以就模拟了一下,帮助其解决问题。
同学的问题:
数据库语句: select a.task , b.productName from a , b where a.id = b.id ;
在b中 一个id 可能有多个productName ,
所以 在结果的实体类task中,有字段为List<String> products
mapper.xml 中:
<resultMap type="task">
<collection property="products" column="productName"
javaType="java.util.ArrayList" ofType="String">
</collection>
</resultMap>
解决方法:
1.按照他的问题,我采用postgresql首先创建了两个表:
CREATE TABLE a
(
id serial NOT NULL,
task character varying(100)
)
CREATE TABLE b
(
id integer,
productname character varying(100)
)
注意:表a和表b的关系是:a中的一条记录可以对应多条b中记录
2.向表中插入几条数据
insert into a(task) values(‘task1‘);//假设id为1
insert into a(task) values(‘task2‘);//假设id为2
insert into b(id,productname) values(1,‘product1‘);
insert into b(id,productname) values(1,‘product2‘);
insert into b(id,productname) values(2,‘product3‘);
3.编写sqlMap
<resultMap type="com.card.transaction.payment.pojo.sql.Tempab" id="selectab">
<result property="task" column="task"/>
<collection property="list" column="productname" ofType="java.lang.String">
<!--这一个很重要,如果不配置的话,拿不到productname的值,有兴趣的话可以试一试 -->
<result column="productname"/>
</collection>
</resultMap>
<select id="selectTM" resultMap="selectab">
select task,productname from a,b where a.id=b.id
</select>
4.运行结果:
---task-----task1
task:task1 produce:product2
task:task1 produce:product1
---task-----task2
task:task2 produce:product3
本文出自 “java” 博客,请务必保留此出处http://zwbjava.blog.51cto.com/2789897/1630250
标签:mybatis3 collection resultmap
原文地址:http://zwbjava.blog.51cto.com/2789897/1630250