mybatis collection 关联表条件查询
时间: 2023-07-20 14:10:29 浏览: 102
MyBatis 中可以通过 `collection` 元素来进行关联表的条件查询。 `collection` 元素用于处理一对多的关联关系,它可以用来映射一个 List 或 Array 对象。下面是一个示例的 mapper.xml 文件:
```xml
<select id="findUserWithOrders" parameterType="Integer" resultMap="userResultMap">
SELECT
u.*, o.id AS order_id, o.order_no AS order_no, o.status AS order_status
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE
u.id = #{id}
ORDER BY
o.id
</select>
<resultMap id="userResultMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<collection property="orders" ofType="Order">
<id property="id" column="order_id"/>
<result property="orderNo" column="order_no"/>
<result property="status" column="order_status"/>
<!-- other result mappings for Order -->
</collection>
</resultMap>
```
这个例子中,我们定义了一个名为 `findUserWithOrders` 的查询语句,它接受一个参数类型为 `Integer` 的对象。查询语句中使用了 LEFT JOIN 连接了 `users` 和 `orders` 表,并在 WHERE 子句中使用了传入的参数 `id` 来限制查询结果只返回指定用户的信息。在结果映射中,我们使用了 `collection` 元素来将一个 `User` 对象中的 `orders` 属性映射为一个 `List<Order>` 对象。
在实际使用中,你需要根据自己的数据表结构和业务逻辑来编写对应的 mapper.xml 文件。你可以参考这个示例,根据自己的情况进行修改。
阅读全文