我不知道如何在一个对象中获得不同表的结果,我希望只用一个查询来填充这个对象......
class HomeDto
{
String street;
Room room1;
Bath bath1;
}
//TABLE -> SIAS_TB_ROOM
class Room {
String idHome;
String floorRoom;
String doorRoom;
}
//TABLE -> SIAS_TB_BATH
class Bath {
String idHome;
String floorBath;
String doorBath;
}
<select id="findHome"
resultType="es.home.integration.model.HomeDto">
SELECT room1.floorRoom, bath1.doorBath
FROM SIAS_TB_BATH bath, SIAS_TB_ROOM room
WHERE bath.idHome = room.idHome
AND bath.floorBath='Purple'
</select>
答案 0 :(得分:0)
使用result map就像这样:
<resultMap id="homeMap" type="es.home.integration.model.HomeDto">
<id property="id" column="idHome"> <!-- you need to add id to home -->
<association property="room1" javaType="es.home.integration.model.Room">
<result property="floorRoom" column="floorRoom"/>
<result property="doorRoom" column="doorRoom"/>
</association>
<association property="bath1" javaType="es.home.integration.model.Bath">
<result property="floorBath" column="floorBath"/>
<result property="doorBath" column="doorBath"/>
</association>
</resultMap>
然后在查询中使用它:
<select id="findHome" resultMap="homeMap">
SELECT room.*, bath.foorBath, bath.doorBath
FROM SIAS_TB_BATH bath, SIAS_TB_ROOM room
WHERE bath.idHome = room.idHome
AND bath.floorBath='Purple'
</select>
您可以通过对这样的关联使用autoMapping来进一步简化映射(对于名称与属性相同的列):
<resultMap id="homeMap" type="es.home.integration.model.HomeDto">
<id property="id" column="idHome"> <!-- you need to add id to home -->
<association property="room1" javaType="es.home.integration.model.Room" autoMapping=true/>
<association property="bath1" javaType="es.home.integration.model.Bath" autoMapping=true>
<result property="aName" column="otherName"/>
</association>
</resultMap>