需要新建一个名为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对象了

order_items表中有product_id products表中有id我怎么使用mybatis实现两个表联合查询给出我需要新建的文件名以及代码我的工程是comecommercebook。实体类目录是pojo

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

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