日期:2014-05-17  浏览次数:20658 次

关于ibatis一对一多表查询的问题.
问题描述:
使用SQL查询数据库, SQL如下:
select * from shoppingcard as s LEFT JOIN mgoods as m on m.id=s.mgid;
在mgoods中还有字段name
期待结果:
在shoppingcard的模型中, 加入mgoods模型, 但不单独添加name属性. 

请问ibatis的XML要怎么写. 或者说对应关系要怎么写.
谢谢

------解决方案--------------------

<select id="searchItem" parameterClass="model" resultClass="item">
<![CDATA[
select 
distinct i.*
from item i left join itemcolor c on i.mjid = c.mjid left join itemsize s on i.mjid = s.mjid 
]]>
<include refid="wheresql" />
<![CDATA[
order by i.makerid,i.brandid,i.mjid
]]>
</select>

一个差不多的,不是根据你的那个写的,不知道和你的要求有关系没有。。
头脑现在好乱,有空再补上
------解决方案--------------------
select *   的*修改为你想要查询的字段,可以全部写进去如果有重复 用别名.字段名就可以了,加上字段name就OK啦
------解决方案--------------------

<!-- 结果集映射,根据groupBy属性值捕获数据封装对象 -->
<resultMap class="person" id="get_person_result" groupBy="cardId">
<result property="cardId" column="cardId" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="sex" column="sex" />
<!-- 引用另一个结合集映射,必须显式使用命名空间前缀 -->
<result property="books" resultMap="Person.get_book_result" />
</resultMap>
<resultMap class="book" id="get_book_result">
<result property="bid" column="bid" />
<result property="bname" column="bname" />
<result property="person.cardId" column="pid" />
<result property="date" column="date" />
</resultMap>
<!-- 多表联查 -->
<select id="getFullPersonById" parameterClass="int"
resultMap="get_person_result">
select * from person p left join book b on
p.cardId=b.pid where p.cardId=#cardId#
</select>