码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis collection

时间:2015-04-09 12:18:20      阅读:1040      评论:0      收藏:0      [点我收藏+]

标签: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

mybatis collection

标签:mybatis3 collection resultmap

原文地址:http://zwbjava.blog.51cto.com/2789897/1630250

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!