在MyBatis Plus中進行多表關聯查詢通常需要自定義SQL語句,因為MyBatis Plus的預設方法主要是針對單表操作。你可以在Mapper介面中定義自定義查詢方法,並使用@Select
註解編寫SQL語句。
以下是一個簡單的例子,假設我們有兩個表user
和order
,我們想要查詢使用者及其訂單資訊:
-
定義User和Order實體類。
-
建立UserOrderMapper介面。
-
在UserOrderMapper介面中定義自定義查詢方法。
-
使用
@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自動生成,僅供參考