MyBatis如何实现一对一,一对多,多对多关联的
时间: 2024-03-26 16:38:52 浏览: 49
Mybatis实现一对一、一对多关联查询
5星 · 资源好评率100%
MyBatis通过配置关联映射,可以轻松地实现一对一、一对多和多对多关联查询。
1. 一对一关联查询:可以通过在主表对应的Mapper映射文件中,使用<resultMap>标签定义一个<association>标签来实现。例如:
```
<resultMap id="userMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="username" />
<result property="password" column="password" />
<association property="profile" javaType="UserProfile">
<id property="id" column="profile_id" />
<result property="email" column="email" />
<result property="phone" column="phone" />
</association>
</resultMap>
```
2. 一对多关联查询:可以通过在主表对应的Mapper映射文件中,使用<resultMap>标签定义一个<collection>标签来实现。例如:
```
<resultMap id="userMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="username" />
<result property="password" column="password" />
<collection property="posts" ofType="Post">
<id property="id" column="post_id" />
<result property="title" column="title" />
<result property="content" column="content" />
</collection>
</resultMap>
```
3. 多对多关联查询:可以通过在中间表对应的Mapper映射文件中,使用<resultMap>标签定义两个<collection>标签来实现。例如:
```
<resultMap id="userMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="username" />
<result property="password" column="password" />
<collection property="roles" ofType="Role">
<id property="id" column="role_id" />
<result property="name" column="name" />
<result property="description" column="description" />
</collection>
</resultMap>
<resultMap id="roleMap" type="Role">
<id property="id" column="role_id" />
<result property="name" column="name" />
<result property="description" column="description" />
<collection property="users" ofType="User">
<id property="id" column="user_id" />
<result property="username" column="username" />
<result property="password" column="password" />
</collection>
</resultMap>
```
以上是MyBatis实现一对一、一对多、多对多关联查询的基本方法,通过配置关联映射,我们可以轻松地实现复杂的查询需求。
阅读全文