MyBatis实现一对一 和一对多关联关系
时间: 2024-09-25 20:00:25 浏览: 26
MyBatis是一个优秀的持久层框架,用于简化Java应用程序与数据库之间的交互。在处理一对一和一对多关联关系时,它通常会利用SQL映射文件(xml)和注解来定义。
**一对一关联**:
假设有一个User表和一个Address表,一对一关系意味着一个用户只有一个地址。在MyBatis中,你可以创建一个UserMapper.xml文件,配置查询语句获取用户及其地址信息。例如:
```xml
<select id="selectUserWithAddress" resultType="com.example.User">
SELECT u.*, a.* FROM User u
LEFT JOIN Address a ON u.addressId = a.id WHERE u.id = #{id}
</select>
```
然后在User实体类中,使用`@OneToOne`注解标识地址字段,并设置`fetchType`属性为`EAGER`以确保关联数据一起加载。
**一对多关联**:
如果有多个地址对应一个用户,可以这样设计。在UserMapper.xml中,通过主键查询用户并返回包含所有地址的列表:
```xml
<select id="selectAllAddressesForUser" resultType="com.example.Address">
SELECT * FROM Address WHERE userId = #{userId}
</select>
```
在User类中,使用`@OneToMany`注解标注地址集合,同样可以设置懒加载(`fetchType.LAZY`)或立即加载(`fetchType.EAGER`)。
阅读全文