ibatis怎么进行多表连接查询
ibatis如何进行多表连接查询
本人这几天在研究ibatis,关于ibatis的多表连接查询,查询出的数据是多张表的结果,这种查询应该怎么用ibatis实现,比如我想查询一个学生的成绩,涉及到了三张表,table student(sid number(5),sname varchar2(10)),课程表table course(cid number(5),cname varchar2(10)),成绩表table score(sid number(5),cid number(5),score number(5)),想展示出学生的对应课程成就,SQL应该是:
select s.sname,c.cname,t.score from student s,course c,score t where s.sid=t.sid and c.cid=
t.cid and s.sid=数字,但是用ibatis应该怎么实现,主要是配置文件这些应该怎么写?我知道的传参数可以用map的形式将各种参数组合起来,但是如果返回结果涉及到多个类的,是不是也应该用map的形式返回?能具体给个有注释的demo吗?谢谢了
------解决方案--------------------
本人这几天在研究ibatis,关于ibatis的多表连接查询,查询出的数据是多张表的结果,这种查询应该怎么用ibatis实现,比如我想查询一个学生的成绩,涉及到了三张表,table student(sid number(5),sname varchar2(10)),课程表table course(cid number(5),cname varchar2(10)),成绩表table score(sid number(5),cid number(5),score number(5)),想展示出学生的对应课程成就,SQL应该是:
select s.sname,c.cname,t.score from student s,course c,score t where s.sid=t.sid and c.cid=
t.cid and s.sid=数字,但是用ibatis应该怎么实现,主要是配置文件这些应该怎么写?我知道的传参数可以用map的形式将各种参数组合起来,但是如果返回结果涉及到多个类的,是不是也应该用map的形式返回?能具体给个有注释的demo吗?谢谢了
ibatis
SQL
连接查询
------解决方案--------------------
<select id="homePageList" parameterClass="java.util.Map" resultClass="java.util.HashMap">
SELECT
v.`attribute_id` AS attributeId,
o.attribute_option_id AS attributeOptionId,
TRIM(ol.`attribute_option_name`) AS attributeOptionName,
v.`value_name` AS valueName,
r.`value_key` AS valueKey,
l.`value_content` AS valueContent
FROM
cosplay_display d
JOIN t_attribute_option o
ON d.option_id = o.attribute_option_id
AND o.data_status = 0
JOIN t_attribute_option_lang ol
ON o.attribute_option_id = ol.attribute_option_id
AND ol.data_status = 0
AND ol.`language_id` = #languageId#
JOIN product_attribute_function_value v
ON o.`product_attribute_id` = v.`attribute_id`
AND o.attribute_option_id = v.option_id
AND v.data_status = 0
AND v.value_name IS NOT NULL
JOIN product_attribute_function_value_lang l
ON l.value_id = v.id
AND l.data_status = 0
AND l.value_content IS NOT NULL
AND l.`language_id` = 1
JOIN product_attribute_function_rule r
ON r.`id` = v.`rule_id`
AND r.`data_status` = 0
<isNotEmpty prepend="and" property="key">
r.`value_key` = #key#
</isNotEmpty>
WHERE d.data_status = 0
AND d.display_type = #displayType#
ORDER BY d.`sort`
LIMIT #returnNum#
</select>