溫馨提示×

怎么使用MyBatis進行關(guān)聯(lián)查詢

小億
85
2024-05-08 12:56:53
欄目: 編程語言

在MyBatis中進行關(guān)聯(lián)查詢可以通過在Mapper文件中使用嵌套查詢來實現(xiàn)。以下是一個簡單的例子:

  1. 創(chuàng)建兩個實體類,比如User和Order,并在實體類中定義關(guān)聯(lián)關(guān)系,比如User有多個Order。
public class User {
    private Long userId;
    private String userName;
    private List<Order> orders;
    // getters and setters
}

public class Order {
    private Long orderId;
    private Long userId;
    private String orderName;
    // getters and setters
}
  1. 創(chuàng)建兩個Mapper接口UserMapper和OrderMapper,并在Mapper接口中定義查詢方法,比如查詢User及其關(guān)聯(lián)的Order。
public interface UserMapper {
    User getUserWithOrders(Long userId);
}

public interface OrderMapper {
    List<Order> getOrdersByUserId(Long userId);
}
  1. 在對應(yīng)的Mapper XML文件中編寫查詢語句,如下所示:

UserMapper.xml

<select id="getUserWithOrders" resultMap="userWithOrders" parameterType="java.lang.Long">
    SELECT * FROM user WHERE user_id = #{userId}
</select>

<resultMap id="userWithOrders" type="User">
    <id property="userId" column="user_id"/>
    <result property="userName" column="user_name"/>
    <collection property="orders" ofType="Order">
        <id property="orderId" column="order_id"/>
        <result property="orderName" column="order_name"/>
    </collection>
</resultMap>

OrderMapper.xml

<select id="getOrdersByUserId" resultType="Order" parameterType="java.lang.Long">
    SELECT * FROM order WHERE user_id = #{userId}
</select>
  1. 在實際使用時,可以通過UserMapper接口的getUserWithOrders方法來查詢User及其關(guān)聯(lián)的Order。
User user = userMapper.getUserWithOrders(1L);

這樣就可以使用MyBatis進行關(guān)聯(lián)查詢了。需要注意的是,在配置文件中要正確配置Mapper接口和XML文件的對應(yīng)關(guān)系。

0