MyBatis中,可以使用resultMap来实现一对一关联。一对一关联是指两个实体类之间存在一对一的关系,即每个实体实例对应数据库中的一条记录,且这条记录在另一张表中也有唯一对应的记录。
实现步骤
创建Java对象:首先,需要创建与表结构对应的Java对象。例如,假设有两个表:user和id_card,其中user表存储用户信息,id_card表存储身份证信息。
Java
public class User {
private Long id;
private String username;
private IdCard idCard;
// Getter and setter methods
}
public class IdCard {
private Long id;
private String idNo;
// Getter and setter methods
}
编写SQL映射:在MyBatis的Mapper XML文件中,定义用于执行查询的SQL语句,并使用resultMap将查询结果映射到Java对象。
XML
SELECT u.*, i.*
FROM user u
LEFT JOIN id_card i ON u.id = i.id
调用Mapper方法:在Java代码中,调用Mapper接口中定义的方法来执行SQL查询并获取结果。
Java
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectUserWithIdCard(1L);
结果
user对象将包含用户信息及其关联的身份证信息。如果用户没有关联的身份证信息,则idCard属性将为null。
注意
association元素用于映射一对一关联。
javaType属性指定关联对象的Java类型。
id和property属性用于指定关联对象的属性和列名映射。
延迟加载
要启用延迟加载,可以在association元素中配置fetchType属性为lazy。这样,只有当需要访问关联对象时才会执行相应的SQL查询。
XML
一对多关联
resultMap也可以用于实现一对多关联。在上述示例中,一个用户可以有多个身份证信息。要实现一对多关联,需要使用collection元素来映射关联对象集合。
XML