MyBatisPlus怎麼多表關聯查詢?

XiaoNiuFeiTian發表於2024-03-18

在MyBatis Plus中進行多表關聯查詢通常需要自定義SQL語句,因為MyBatis Plus的預設方法主要是針對單表操作。你可以在Mapper介面中定義自定義查詢方法,並使用@Select註解編寫SQL語句。

以下是一個簡單的例子,假設我們有兩個表userorder,我們想要查詢使用者及其訂單資訊:

  1. 定義User和Order實體類。

  2. 建立UserOrderMapper介面。

  3. 在UserOrderMapper介面中定義自定義查詢方法。

  4. 使用@Select註解編寫SQL語句。

// User.java (實體類)
public class User {
  private Long id;
  private String name;
  // 省略其他欄位、getter和setter方法
}

// Order.java (實體類)

public class Order {
  private Long id;
  private Long userId;
  private String orderNumber;
  // 省略其他欄位、getter和setter方法
}

// UserOrderMapper.java (Mapper介面)

public interface UserOrderMapper {
@Select("SELECT u.id AS userId, u.name, o.id AS orderId, o.order_number " +
"FROM user u " +
"LEFT JOIN order o ON u.id = o.user_id " +
"WHERE u.id = #{userId}")
List<UserOrderDTO> selectUserOrders(@Param("userId") Long userId);
}

// UserOrderDTO.java (資料傳輸物件)

public class UserOrderDTO {
  private Long userId;
  private String userName;
  private Long orderId;
  private String orderNumber;
  // 省略建構函式、getter和setter方法
}

在上面的例子中,UserOrderDTO是一個包含使用者和訂單資訊的資料傳輸物件。自定義的selectUserOrders方法使用了@Select註解來編寫SQL語句,該語句執行了一個左連線查詢,將使用者表和訂單表根據使用者ID進行關聯,並過濾出特定使用者的訂單資訊。

請注意,你需要在MyBatis Plus的配置中指定這個Mapper介面,以便框架能夠識別和使用它。

提示:AI自動生成,僅供參考

相關文章