mybatis一对多 多的一方模糊查询
时间: 2023-11-19 12:06:40 浏览: 75
在MyBatis中实现一对多关系的模糊查询,可以通过使用动态SQL和关联查询来完成。以下是一个简单的示例:
首先,假设我们有两个实体类:Order和Product,它们之间的关系是一对多,即一个订单可以包含多个产品。
在OrderMapper.xml文件中,我们可以使用动态SQL和关联查询来实现模糊查询。以下是一个示例:
```xml
<!-- 根据订单号和产品名称模糊查询订单列表 -->
<select id="getOrdersByOrderNoAndProductName" resultMap="orderResultMap">
SELECT o.*, p.*
FROM orders o
INNER JOIN products p ON o.order_id = p.order_id
WHERE o.order_no LIKE CONCAT('%', #{orderNo}, '%')
AND p.product_name LIKE CONCAT('%', #{productName}, '%')
</select>
<!-- 定义结果映射 -->
<resultMap id="orderResultMap" type="Order">
<id property="id" column="order_id"/>
<result property="orderNo" column="order_no"/>
<!-- 其他属性映射... -->
<collection property="products" ofType="Product">
<id property="id" column="product_id"/>
<result property="productName" column="product_name"/>
<!-- 其他属性映射... -->
</collection>
</resultMap>
```
在OrderMapper接口中添加方法定义:
```java
public interface OrderMapper {
List<Order> getOrdersByOrderNoAndProductName(@Param("orderNo") String orderNo, @Param("productName") String productName);
}
```
然后,在你的代码中调用该方法:
```java
List<Order> orders = orderMapper.getOrdersByOrderNoAndProductName("123", "Apple");
```
这样就可以根据订单号和产品名称进行模糊查询了。
阅读全文