我用mybatis 一对多映射 级联查询时 当调用orderAndDetail 时预期返回值应该是一个Order 类型,但是它返回了一个List
实体类:
Order:
```java
package entity;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class Order {
private int id;
private int userId;
private String number;
private String createtime;
private String note;
private User userAssociation;
private List<OrderDetail> orderDetail;
@Override
public String toString() {
return "Order{" +
"id=" + id +
", userId=" + userId +
", number='" + number + '\'' +
", createtime='" + createtime + '\'' +
", note='" + note + '\'' +
'}';
}
}
OrderDetail:
```java
package mapper;
import entity.Order;
import java.util.List;
public interface OrderMapper {
Order queryByIdAssociation(int id);
Order queryByIdLazy(int id);
Order orderAndDetail(int id);
}
接口:
OrderMapper:
```java
package mapper;
import entity.Order;
import java.util.List;
public interface OrderMapper {
Order queryByIdAssociation(int id);
Order queryByIdLazy(int id);
Order orderAndDetail(int id);
}
OrderMapper.xml中涉及部分:
<resultMap id="OrderMapDetail" type="Order" >
<id property="id" column="detail_id"/>
<collection property="orderDetail" ofType="OrderDetail">
<id property="id" column="id"/>
</collection>
</resultMap>
<select id="orderAndDetail" resultMap="OrderMapDetail">
select o.*,od.id detail_id,od.item_id,od.item_num,od.order_id
from `order` o,orderdetail od
where o.id=od.order_id
and o.id=#{OrderId}
</select>
测试方法:
@Test
public void testSelect2() throws IOException {
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);
Order order = orderMapper.orderAndDetail(100);
System.out.println(order);
System.out.println(order.getOrderDetail());
}