在MyBatis中,可以通過嵌套查詢(Nested Query)來實現一對多關系的查詢。
首先,需要定義兩個實體類:一個是一的一方實體類,另一個是多的一方實體類。例如,定義一個User類和一個Order類,一個用戶可以擁有多個訂單。
public class User {
private Integer id;
private String username;
private List<Order> orders;
// 省略getter和setter方法
}
public class Order {
private Integer id;
private String orderNo;
private Integer userId;
// 省略getter和setter方法
}
然后,在Mapper接口中定義兩個方法:一個是查詢用戶信息的方法,另一個是查詢用戶對應的訂單信息的方法。
public interface UserMapper {
User getUser(Integer id);
List<Order> getOrdersByUserId(Integer userId);
}
接下來,在Mapper.xml文件中實現這兩個方法。
首先實現getUser方法:
<select id="getUser" parameterType="Integer" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
然后實現getOrdersByUserId方法:
<select id="getOrdersByUserId" parameterType="Integer" resultType="Order">
SELECT * FROM orders WHERE userId = #{userId}
</select>
最后,使用嵌套查詢來實現一對多關系的查詢。在getUser方法中使用
<select id="getUser" parameterType="Integer" resultType="User">
SELECT * FROM user WHERE id = #{id}
<collection property="orders" ofType="Order" select="getOrdersByUserId">
<id property="userId" column="id"/>
</collection>
</select>
這樣,就可以通過getUser方法查詢到一個用戶以及該用戶對應的所有訂單信息。
User user = userMapper.getUser(1);
System.out.println(user.getUsername());
for (Order order : user.getOrders()) {
System.out.println(order.getOrderNo());
}
以上就是使用MyBatis實現一對多嵌套查詢的方法。通過嵌套查詢,可以將多的一方的數據嵌套到一的一方中,實現一對多關系的查詢。