如何处理ibatis和java中多个表的sql映射

时间:2010-12-06 06:21:48

标签: java ibatis

我正在尝试使用带有GWT的Ibatis,我有这个场景,我有数据库表机场,终端和航班。机场可以有不同的终端。一个航站楼可以有一个机场和许多航班。一个航班可以有一个航站楼。所以表结构看起来像这样。

机场 -ID -名称 -terminal_id

端子 -ID -名称 -flight_id

航班 -ID -航空公司 -terminal_id

我的选择语句如下所示

SELECT airport.name AS Airport,
       terminals.name AS Terminal,
       flights.airline,
FROM airport,
     terminals,
     flights
WHERE airport.terminal_id = terminals.id
  AND terminals.flight_id = flights.id;

获取此结果的sql映射是什么样的?我感到困惑的地方是结果集是表的组合,因此结果集不是三个表中任何一个表的模型对象。

1 个答案:

答案 0 :(得分:4)

根据需要创建自定义值对象(vo)。

<sqlMap namespace="Arrival">
<resultMap id="Arrival" class="com.flight.vo.Arrival">
    <result property="airport" column="Airport" />
    <result property="terminal" column="Terminal" />
    <result property="airline" column="airline"/>
</resultMap>

<select id="retrieveAllArrivals" resultMap="Arrival.Arrival" >
    select airport.name as Airport, terminals.name as Terminal, flights.airline
    FROM airport, terminals, flights 
    WHERE airport.terminal_id = terminals.id 
    AND terminals.flight_id = flights.id
</select>
</sqlMap>