order_items表中有product_id products表中有id我怎么使用mybatis实现两个表联合查询给出我需要新建的文件名以及代码我的工程是comecommercebook
- 首先需要在com.ecommerce.book包下新建一个mapper包,用于存放mybatis的mapper接口和xml配置文件。
- 在mapper包下新建一个OrderItemMapper接口,用于定义联合查询的方法。代码如下:
package com.ecommerce.book.mapper;
import com.ecommerce.book.entity.OrderItem;
import com.ecommerce.book.entity.Product;
public interface OrderItemMapper {
List<OrderItem> getOrderItemsWithProduct(); //联合查询方法
}
- 在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>
- 在com.ecommerce.book包下新建一个service包,用于存放业务逻辑代码。
- 在service包下新建一个OrderItemService接口,用于定义联合查询的方法。代码如下:
package com.ecommerce.book.service;
import com.ecommerce.book.entity.OrderItem;
public interface OrderItemService {
List<OrderItem> getOrderItemsWithProduct(); //联合查询方法
}
- 在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();
}
}
- 最后,在需要调用联合查询的地方注入OrderItemService,并调用getOrderItemsWithProduct方法即可
原文地址: https://www.cveoy.top/t/topic/dhoF 著作权归作者所有。请勿转载和采集!