Mybatis:如何映射与父类存储在同一表中的类属性



我有一个机场类,它映射到以下SQL表:

create TABLE AIRPORT (
LATITUDE             NUMERIC(17, 6),
LONGITUDE            NUMERIC(17, 6),
COUNTRY_CDE          VARCHAR(2) not null,
COM_CDE              VARCHAR(4) not null,
TZ_CDE               VARCHAR(4),
... Additional columns ommitted
)

我想将此表映射到Airport类,如下所示(换句话说,我想将LATITUDELONGITUDE列映射到latLng属性,该属性是LatLng类的实例):

public class LatLng{
private double latitude;
private double longitude;
// getters and setters omitted
}
public class Airport{
private LatLng latlng;
...
LatLng getLatLng();
}

显而易见的答案是将LATITUDELONGITUDE保留为单独的类成员,然后直接在代码中提供实际的映射以LatLng。我想知道是否可以直接使用 myBatis 进行映射(反之亦然,即将LatLng属性映射到相应的表列)。

好的回答我自己的问题。事实证明,这非常容易。在映射器文件中,您只需要在结果映射中指示该列使用点表示法映射到复杂属性(此处 latLng 对应于 LatLng 类实例):

<resultMap id="AirportResult" type="Airport">
<id property="code" column="com_cde"/>
<result property="latLng.latitude" column="latitude"/>
<result property="latLng.longitude" column="longitude"/>
</resultMap>
<select id="findByCode" parameterType="String" resultMap="AirportResult">
SELECT com_cde,
LATITUDE,
LONGITUDE FROM AIRPORT
WHERE com_cde = #{code}
</select>

最新更新