我有一个Airport类,它映射到以下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
类,如下所示(换句话说,我想将LATITUDE
和LONGITUDE
列映射到latLng
属性,这是LatLng
类的一个实例:
public class LatLng{
private double latitude;
private double longitude;
// getters and setters omitted
}
public class Airport{
private LatLng latlng;
...
LatLng getLatLng();
}
显而易见的答案是将LATITUDE
和LONGITUDE
保持为单独的类成员,然后直接在代码中提供到LatLng
的实际映射。我想知道是否可以直接使用myBatis进行映射(以及相反的方式,即将LatLng
属性映射到相应的表列)。
答案 0 :(得分:1)
好的回答我自己的问题。事实证明,它非常容易。在mapper文件中,您只需要在resultMap中指示使用点表示法将列映射到复杂属性(此处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>