Mybatis中resultMap的使用

一、resultMap映射不规范字段
首先建立两个数据表emp(员工表)和dept(部门表),两者对应关系为,员工和部门之间为一对一关系,部门和员工之间为一对多关系。查询mysql数据库中数据表如下图所示。
Mybatis中resultMap的使用
Mybatis中resultMap的使用
然后在eclipse中创建maven工程,添加mybatis相关依赖,创建Emp、Dept两个POJO对象,代码如下:
@Getter//使用lombok标签自动生成Getter、Setter、ToString方法
@Setter
@ToString
public class Emp {
private Integer empId;
private String empName;
private Integer emp_dept_id;
}

@Getter
@Setter
@ToString
public class Dept {
private Integer deptId;
private String deptName;
}
当POJO对象与数据库中字段名不一致时,我们可以通过resultMap自定义映射,xml文件中代码如下:

Mybatis中resultMap的使用
select标签中的resultMap值应和resultMap标签中的id值一致,id标签为主键,result标签为普通字段,column对应的值为数据库表中的值,property对应的值为自定义映射的值在此即POJO对象的值。然后通过测试查询所得控制台结果如下:
Mybatis中resultMap的使用
二、resultMap用于关联查询或嵌套查询
我们创建两个EmpVO、DeptVO值对象,代码如下:
@Getter
@Setter
@ToString
public class EmpVO {
private Integer empId;
private String empName;
private Dept dept;
}

@Getter
@Setter
@ToString
public class DeptVO {
private Integer deptId;
private String deptName;
private List emps;
}
当查询EmpVO对象时,为一对一关联查询,映射xml代码如下:
Mybatis中resultMap的使用
当一对一查询时使用association标签,标签内封装的信息为关联对象信息,在此即为部门信息(包含部门id和name)。通过测试类控制台查询结果如下:
Mybatis中resultMap的使用
当查询DeptVO对象时,为一对多关联查询,映射xml代码如下:
Mybatis中resultMap的使用
当一对多查询时使用collection标签,标签内封装的信息为关联对象信息,在此即为员工信息(包含员工id、name、emp_dept_id)。通过测试类控制台查询结果如下:
Mybatis中resultMap的使用