狂神说mybatis一对一关联查询
时间: 2025-02-08 16:52:36 浏览: 28
### MyBatis 一对一关联查询详解
#### 使用 `resultMap` 实现一对一关联查询
为了实现用户表 (User) 和书籍表 (Book) 的一对一关联查询,可以定义两个实体类分别表示 User 和 Book,并创建相应的 Mapper 接口和 XML 文件来描述 SQL 映射逻辑。
在 `User.java` 类中声明一个私有字段指向单个 `Book` 对象:
```java
private Book book;
```
接着,在对应的 `UserMapper.xml` 中编写 resultMap 来指定如何加载关联对象:
```xml
<resultMap id="userWithBookResultMap" type="com.example.User">
<!-- 用户基本信息 -->
<id column="userId" property="id"/>
<result column="username" property="name"/>
<!-- 关联的书本信息 -->
<association property="book" javaType="com.example.Book">
<id column="bookId" property="id"/>
<result column="title" property="title"/>
<result column="author" property="author"/>
</association>
</resultMap>
<select id="selectUserAndBookById" parameterType="int" resultMap="userWithBookResultMap">
SELECT u.id AS userId, u.username,
b.id AS bookId, b.title, b.author
FROM users u LEFT JOIN books b ON u.book_id = b.id
WHERE u.id=#{id}
</select>
```
上述代码片段展示了如何利用 `<association>` 标签完成一对一的关系映射[^1]。这里的关键在于正确设置 `property` 属性指明目标 Java Bean 的成员变量名,同时通过 `column` 参数告知数据库列名称与之对应。
当执行此查询语句时,MyBatis 将自动把来自两张表的结果集组合成单一的对象实例返回给调用者。
阅读全文
相关推荐















