mybatisplus一对多对象例子
时间: 2023-05-31 21:03:15 浏览: 229
假设有两个表:`user`和`order`,一个用户可以有多个订单,我们来看一下如何使用MyBatis Plus实现一对多查询。
首先,我们需要定义两个实体类:`User`和`Order`,并在`User`类中定义一个`List<Order>`类型的属性。
```java
@Data
public class User {
private Long id;
private String name;
private List<Order> orders;
}
@Data
public class Order {
private Long id;
private Long userId;
private String orderNo;
}
```
接着,我们需要定义两个Mapper接口:`UserMapper`和`OrderMapper`,并在`UserMapper`中定义一个`findUserWithOrders(Long userId)`方法,用于查询指定用户及其所有订单。
```java
public interface UserMapper extends BaseMapper<User> {
User findUserWithOrders(Long userId);
}
public interface OrderMapper extends BaseMapper<Order> {
}
```
在`UserMapper.xml`中,我们可以使用MyBatis Plus的XML查询构建器来实现一对多查询。
```xml
<select id="findUserWithOrders" resultMap="userMap">
SELECT u.*, o.id AS order_id, o.order_no
FROM user u
LEFT JOIN order o ON u.id = o.user_id
WHERE u.id = #{userId}
</select>
<resultMap id="userMap" type="com.example.User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="orders" ofType="com.example.Order">
<id property="id" column="order_id"/>
<result property="userId" column="user_id"/>
<result property="orderNo" column="order_no"/>
</collection>
</resultMap>
```
最后,在我们的代码中,我们可以通过调用`UserMapper.findUserWithOrders(Long userId)`方法来查询指定用户及其所有订单。
```java
User user = userMapper.findUserWithOrders(1L);
System.out.println(user.getName());
for (Order order : user.getOrders()) {
System.out.println(order.getOrderNo());
}
```
以上就是使用MyBatis Plus实现一对多查询的例子。
阅读全文