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