order_items表中有product_id products表中有id我怎么使用mybatis实现两个表联合查询给出我需要新建的文件名以及代码我的工程是comecommercebook。实体类目录是pojo
需要新建一个名为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对象了
原文地址: https://www.cveoy.top/t/topic/dhsg 著作权归作者所有。请勿转载和采集!