目录
一、关联查询
association 一对一关系
collection 一对多关系
discriminator 鉴别器映射
关联方式
嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集,简而言之:一个sql查询多表
嵌套查询:通过执行另外一个 SQL 映射语句来返回预期的复杂类型,简而言之:多个sql查询多表
二、 一对一
在Mybatis中,一对一查询是通过在resultMap中配置
associatio标签来实现的,我们先采用嵌套结果的方式展示
举例:
2.1 用户User和身份证Card
public class TUser {
private Integer id;
private String userName;
private String sex;
private Integer age;
private Integer cardId;
private TCard card; //演示一对一
private List<TCourse> courses; //演示一对多
private THealthreport healthreport; //演示鉴别器
.....
}
public class TCard {
private Integer id;
private Integer cardNum;
private Integer userId;
.....
}
2.2 写TUserMapper接口
public interface TUserMapper {
List<TUser> selectUserAndCard();
...
}
2.3 配置TUserMapper.xml中
首先配置User实体类与表的对应关系
<resultMap id="BaseResultMap" type="com.zc.entity.TUser" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="user_name" property="userName" jdbcType="VARCHAR" />
<result column="sex" property="sex" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
</resultMap>
除此之外还要配置User属性card对应的映射,一对一映射的关键
<!--
extends="BaseResultMap" 通过继承的方式,引入BaseResultMap映射,简化配置
type="com.zc.entity.TUser" 最终映射的类型
-->
<resultMap id="UserAndCard" extends="BaseResultMap" type="com.zc.entity.TUse