MyBatis联合查询:OrderItem和Product表关联查询
需要新建一个名为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/nDIV 著作权归作者所有。请勿转载和采集!