Growing Hacker 2023-07-05 22:17 采纳率: 94.4%
浏览 20
已结题

Mybatis 一对多连接未返回预期返回类型

我用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());

    }

  • 写回答

3条回答 默认 最新

  • 心寒丶 全栈领域优质创作者 2023-07-06 09:55
    关注

    那你根据传进去的100这个值能查到几条数据呢?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月24日
  • 已采纳回答 7月16日
  • 创建了问题 7月5日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗