在 MyBatis 中,你可以使用嵌套的 resultMap 或者 resultType 属性来处理复杂对象。这里有两种方法来实现:
- 使用嵌套的 resultMap:
首先,创建一个包含所需属性的实体类。例如,假设我们有一个订单(Order)对象,其中包含一个用户(User)对象:
public class Order {
private int id;
private String orderNumber;
private User user;
// getter and setter methods
}
public class User {
private int id;
private String name;
// getter and setter methods
}
然后,在 MyBatis 的映射文件中,为这两个对象创建一个 resultMap。在这个例子中,我们将创建一个名为 “OrderResultMap” 的 resultMap,并在其中嵌套一个名为 “UserResultMap” 的 resultMap:
最后,在查询语句中使用这个 resultMap:
SELECT o.id as order_id, o.order_number, u.id as user_id, u.name as user_name
FROM orders o
JOIN users u ON o.user_id = u.id
WHERE o.id = #{orderId}
</select>
- 使用嵌套的 resultType:
与上面类似,首先创建实体类。然后,在 MyBatis 的映射文件中,为这两个对象创建一个 resultType。在这个例子中,我们将创建一个名为 “OrderResultType” 的 resultType,并在其中嵌套一个名为 “UserResultType” 的 resultType:
请注意,这里我们使用了
最后,在查询语句中使用这个 resultType: 这样,MyBatis 就可以正确处理复杂对象并将其映射到相应的实体类。 标签而不是 标签,因为我们处理的是一个集合。 SELECT o.id as order_id, o.order_number, u.id as user_id, u.name as user_name
FROM orders o
JOIN users u ON o.user_id = u.id
WHERE o.id = #{orderId}
</select>