mybatis级联查询一对一
时间: 2023-08-15 19:06:06 浏览: 99
MyBatis支持通过级联查询来实现一对一关系的查询。在进行一对一级联查询时,需要使用MyBatis提供的`association`标签来配置关联关系。
首先,需要在映射文件中定义两个相关的结果映射。一个是主实体对象的映射,另一个是关联实体对象的映射。例如,我们有一个订单(Order)实体和一个用户(User)实体,订单有一个外键指向用户表。
```xml
<!-- 订单实体映射 -->
<resultMap id="orderResultMap" type="com.example.Order">
<id property="id" column="order_id" />
<result property="orderNo" column="order_no" />
<association property="user" javaType="com.example.User">
<id property="id" column="user_id" />
<result property="username" column="username" />
<result property="email" column="email" />
</association>
</resultMap>
<!-- 用户实体映射 -->
<resultMap id="userResultMap" type="com.example.User">
<id property="id" column="user_id" />
<result property="username" column="username" />
<result property="email" column="email" />
</resultMap>
```
然后,在查询订单时,使用`association`标签配置一对一关联查询:
```xml
<select id="getOrderById" resultMap="orderResultMap">
SELECT o.id as order_id, o.order_no, u.id as user_id, u.username, u.email
FROM orders o
INNER JOIN users u ON o.user_id = u.id
WHERE o.id = #{orderId}
</select>
```
这样,当执行`getOrderById`查询时,MyBatis会自动进行一对一的级联查询,将订单对象的关联用户对象填充进去。
注意:以上示例中的表名、列名等需要根据实际情况进行修改。
阅读全文