需要新建一个名为OrderItemMapper.xml的文件,放在src/main/resources/com/ecommerce/book/mapper目录下,代码如下:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'>

<mapper namespace='com.ecommerce.book.mapper.OrderItemMapper'>

  <resultMap id='OrderItemResultMap' type='com.ecommerce.book.pojo.OrderItem'>
    <id property='id' column='id'/>
    <result property='productId' column='product_id'/>
    <result property='quantity' column='quantity'/>
    <result property='subtotal' column='subtotal'/>
    <association property='product' javaType='com.ecommerce.book.pojo.Product'>
      <id property='id' column='product_id'/>
      <result property='name' column='name'/>
      <result property='price' column='price'/>
      <result property='stock' column='stock'/>
    </association>
  </resultMap>

  <select id='findOrderItemWithProduct' resultMap='OrderItemResultMap'>
    SELECT oi.id, oi.product_id, oi.quantity, oi.subtotal, p.name, p.price, p.stock
    FROM order_items oi
    INNER JOIN products p ON oi.product_id = p.id
    WHERE oi.id = #{id}
  </select>

</mapper>

这个文件定义了一个名为findOrderItemWithProduct的查询语句,它会查询出指定id的OrderItem记录,并且关联查询出对应的Product记录。查询结果会使用OrderItemResultMap这个结果映射来封装成OrderItem对象。

在OrderItemMapper接口中定义这个查询语句的方法:

package com.ecommerce.book.mapper;

import com.ecommerce.book.pojo.OrderItem;

public interface OrderItemMapper {
    OrderItem findOrderItemWithProduct(int id);
}

最后,在使用这个方法的地方调用它即可:

OrderItem orderItem = orderItemMapper.findOrderItemWithProduct(1);

这样就能得到一个包含关联查询结果的OrderItem对象了。

MyBatis联合查询:OrderItem和Product表关联查询

原文地址: https://www.cveoy.top/t/topic/nDIV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录