Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ibatis和java中处理多个表的sql映射_Java_Ibatis - Fatal编程技术网

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

如何在ibatis和java中处理多个表的sql映射,java,ibatis,Java,Ibatis,我正在尝试将Ibatis与GWT结合使用,我有这个场景,我有机场、航站楼和航班的数据库表。一个机场可以有不同的航站楼。一个航站楼可以有一个机场和多个航班。一个航班可以有一个终端。因此,表结构如下所示 机场 -身份证 -名字 -终端标识 终端 -身份证 -名字 -航班号 飞行 -身份证 -航空公司 -终端标识 我的select语句如下所示 SELECT airport.name AS Airport, terminals.name AS Terminal, flight

我正在尝试将Ibatis与GWT结合使用,我有这个场景,我有机场、航站楼和航班的数据库表。一个机场可以有不同的航站楼。一个航站楼可以有一个机场和多个航班。一个航班可以有一个终端。因此,表结构如下所示

机场 -身份证 -名字 -终端标识

终端 -身份证 -名字 -航班号

飞行 -身份证 -航空公司 -终端标识

我的select语句如下所示

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映射是什么样子的。我感到困惑的是,结果集是表的组合,因此结果集不是三个表中任何一个的模型对象。

创建自定义值对象(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>

选择airport.name作为airport,terminals.name作为Terminal,flights.airline
从机场、航站楼、航班
其中airport.terminal_id=terminals.id
AND terminals.flights_id=flights.id

一个选项是创建视图/物化视图。