springboot里面的mybatis怎么进行级联查询
时间: 2023-11-07 11:06:49 浏览: 105
在 Spring Boot 中使用 MyBatis 进行级联查询可以通过两种方式实现:使用 MyBatis 自带的 `association` 和 `collection` 标签或者使用注解 `@Results`。
1. 使用 MyBatis 自带的 `association` 和 `collection` 标签
`association` 标签用来描述一对一关系,`collection` 标签用来描述一对多关系。下面是一个使用 MyBatis 自带标签进行级联查询的示例:
```xml
<select id="findUserById" parameterType="int" resultMap="userMap">
select * from user where id = #{id}
</select>
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<association property="userInfo" resultMap="userInfoMap"/>
<collection property="orders" resultMap="orderMap"/>
</resultMap>
<resultMap id="userInfoMap" type="UserInfo">
<id property="id" column="id"/>
<result property="nickname" column="nickname"/>
<result property="age" column="age"/>
</resultMap>
<resultMap id="orderMap" type="Order">
<id property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="orderName" column="order_name"/>
<result property="userId" column="user_id"/>
</resultMap>
```
在上面的例子中,`userMap` 这个结果集映射中使用了 `association` 和 `collection` 标签,表示查询用户时同时查询用户信息和订单信息。其中 `association` 标签用来描述用户信息和用户之间的一对一关系,`collection` 标签用来描述用户和订单之间的一对多关系。MyBatis 会自动将查询结果封装成对应的 Java 对象,完成级联查询。
2. 使用注解 `@Results`
除了使用 MyBatis 自带的标签外,也可以使用注解 `@Results` 来进行级联查询。下面是一个使用注解 `@Results` 进行级联查询的示例:
```java
@Results({
@Result(property = "id", column = "id"),
@Result(property = "username", column = "username"),
@Result(property = "password", column = "password"),
@Result(property = "userInfo", column = "id",
one = @One(select = "com.example.demo.mapper.UserMapper.findUserInfoById")),
@Result(property = "orders", column = "id",
many = @Many(select = "com.example.demo.mapper.UserMapper.findOrdersByUserId"))
})
User findUserById(int id);
UserInfo findUserInfoById(int id);
List<Order> findOrdersByUserId(int userId);
```
在上面的例子中,使用了注解 `@Results` 来定义结果集映射。其中 `@One` 和 `@Many` 注解用来描述一对一和一对多关系,分别指向查询对应对象的方法。MyBatis 会自动通过这些注解来完成级联查询。
阅读全文