在 MyBatis 中,可以使用 ResultMap 來映射復(fù)雜對(duì)象,包括嵌套對(duì)象、集合對(duì)象等。下面是一個(gè)示例,演示如何使用 ResultMap 映射一個(gè)包含嵌套對(duì)象的復(fù)雜對(duì)象:
首先,定義一個(gè) User 類和一個(gè) Address 類,User 類包含一個(gè) Address 對(duì)象:
public class User {
private int id;
private String username;
private Address address;
// getters and setters
}
public class Address {
private String street;
private String city;
private String country;
// getters and setters
}
接下來,在 MyBatis 的 XML 配置文件中定義 ResultMap,將 User 對(duì)象和 Address 對(duì)象進(jìn)行映射:
<resultMap id="userAddressMap" type="User">
<id property="id" column="id" />
<result property="username" column="username" />
<association property="address" javaType="Address">
<id property="street" column="street" />
<result property="city" column="city" />
<result property="country" column="country" />
</association>
</resultMap>
然后,在 SQL 映射文件中使用上面定義的 ResultMap:
<select id="getUserById" resultMap="userAddressMap">
SELECT u.id, u.username, a.street, a.city, a.country
FROM users u
JOIN addresses a ON u.address_id = a.id
WHERE u.id = #{id}
</select>
最后,在 Java 代碼中調(diào)用 MyBatis 執(zhí)行查詢:
User user = sqlSession.selectOne("getUserById", 1);
System.out.println(user.getId());
System.out.println(user.getUsername());
System.out.println(user.getAddress().getStreet());
System.out.println(user.getAddress().getCity());
System.out.println(user.getAddress().getCountry());
通過以上步驟,我們成功地使用 ResultMap 實(shí)現(xiàn)了復(fù)雜對(duì)象的映射。需要注意的是,在定義 ResultMap 時(shí)要確保屬性名和數(shù)據(jù)庫(kù)字段名一致,以確保正確映射。