在 MyBatis 中,可以通过嵌套查询来实现 resultType 的关联查询。具体步骤如下:
首先,需要定义两个实体类,例如 User 和 Order。User 类包含一个 List
public class User {
private int id;
private String name;
private List<Order> orders;
// 省略 getter 和 setter 方法
}
public class Order {
private int id;
private String orderNo;
private double amount;
// 省略 getter 和 setter 方法
}
接下来,需要为 User 和 Order 创建映射文件。在这里,我们将使用 resultMap 来定义嵌套查询。
<!-- UserMapper.xml -->
<mapper namespace="com.example.dao.UserMapper">
<resultMap id="UserResultMap" type="User">
<id property="id" column="user_id"/>
<result property="name" column="user_name"/>
<collection property="orders" ofType="Order" column="user_id" select="selectOrdersByUserId"/>
</resultMap>
<select id="selectUserWithOrders" resultMap="UserResultMap">
SELECT * FROM user
</select>
<select id="selectOrdersByUserId" resultType="Order">
SELECT * FROM `order` WHERE user_id = #{userId}
</select>
</mapper>
在上面的代码中,我们定义了一个名为 “UserResultMap” 的 resultMap,其中包含一个 collection 元素。这个元素的作用是将查询到的订单数据填充到 User 对象的 orders 属性中。通过设置 column 属性为 “user_id” 和 select 属性为 “selectOrdersByUserId”,我们告诉 MyBatis 在查询用户数据时,同时执行 “selectOrdersByUserId” 查询,并将结果填充到相应的 User 对象的 orders 属性中。
最后,需要创建一个 UserMapper 接口,用于与映射文件关联。
public interface UserMapper {
List<User> selectUserWithOrders();
}
现在,你可以在你的业务逻辑中调用 UserMapper 的 selectUserWithOrders() 方法来获取用户及其关联的订单数据。
List<User> users = userMapper.selectUserWithOrders();
这样,你就实现了 MyBatis 中 resultType 的嵌套查询。