1. 首先需要在 com.ecommerce.book 包下新建一个 mapper 包,用于存放 mybatis 的 mapper 接口和 xml 配置文件。
  2. 在 mapper 包下新建一个 OrderItemMapper 接口,用于定义联合查询的方法。代码如下:
package com.ecommerce.book.mapper;

import com.ecommerce.book.entity.OrderItem;
import com.ecommerce.book.entity.Product;

import java.util.List;

public interface OrderItemMapper {
    List<OrderItem> getOrderItemsWithProduct(); //联合查询方法
}
  1. 在 mapper 包下新建一个 OrderItemMapper.xml 文件,用于配置联合查询的 SQL 语句。代码如下:
<?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.entity.OrderItem">
        <id property="id" column="id"/>
        <result property="productId" column="product_id"/>
        <result property="quantity" column="quantity"/>
        <result property="price" column="price"/>
        <association property="product" column="product_id" javaType="com.ecommerce.book.entity.Product" select="getProductById"/>
    </resultMap>

    <select id="getOrderItemsWithProduct" resultMap="OrderItemResultMap">
        SELECT * FROM order_items
        LEFT JOIN products ON order_items.product_id = products.id
    </select>

    <select id="getProductById" parameterType="Long" resultType="com.ecommerce.book.entity.Product">
        SELECT * FROM products WHERE id = #{id}
    </select>

</mapper>
  1. 在 com.ecommerce.book 包下新建一个 service 包,用于存放业务逻辑代码。
  2. 在 service 包下新建一个 OrderItemService 接口,用于定义联合查询的方法。代码如下:
package com.ecommerce.book.service;

import com.ecommerce.book.entity.OrderItem;

import java.util.List;

public interface OrderItemService {
    List<OrderItem> getOrderItemsWithProduct(); //联合查询方法
}
  1. 在 service 包下新建一个 OrderItemServiceImpl 实现类,用于实现联合查询的方法。代码如下:
package com.ecommerce.book.service.impl;

import com.ecommerce.book.entity.OrderItem;
import com.ecommerce.book.mapper.OrderItemMapper;
import com.ecommerce.book.service.OrderItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class OrderItemServiceImpl implements OrderItemService {

    @Autowired
    private OrderItemMapper orderItemMapper;

    @Override
    public List<OrderItem> getOrderItemsWithProduct() {
        return orderItemMapper.getOrderItemsWithProduct();
    }
}
  1. 最后,在需要调用联合查询的地方注入 OrderItemService,并调用 getOrderItemsWithProduct 方法即可。
Mybatis 实现两表联合查询:order_items 和 products

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

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