有时侯,我们用SQL取得的结果需要映射到类似Map<key, Bean>这样的数据结构中或是映射到多个实体类中时,我们就需要使用到resultMap。下面用3个例子说明Mybatis高级结果映射的用法。

<环境准备>

请参照上一篇blog<

<数据准备>

创建班级--学生表的一对多的数据结构

 1 --创建班级表
 2 CREATE TABLE tempdb..test_class
 3 (
 4 class_id int NOT NULL PRIMARY KEY,
 5 class_name varchar(255),
 6 class_admin_name varchar(255)
 7 );
 8 --创建学生表
 9 CREATE TABLE tempdb..test_student
10 (
11 student_id int NOT NULL PRIMARY KEY,
12 class_id int,
13 student_name varchar(255),
14 student_age int,
15 student_address varchar(255)
16 );
17 --班级表中插入数据
18 insert tempdb..test_class values (101, 'Class 1, Grade 1', 'Mr. Zhang');
19 insert tempdb..test_class values (102, 'Class 2, Grade 1', 'Mr. Li');
20 insert tempdb..test_class values (103, 'Class 3, Grade 1', 'Mr. Wang');
21 insert tempdb..test_class values (201, 'Class 1, Grade 2', 'Mr. Zhao');
22 insert tempdb..test_class values (202, 'Class 2, Grade 2', 'Mr. Liu');
23 --学生表中插入数据
24 insert tempdb..test_student values (101001, 101, 'Name 1', 20, 'Address 1');
25 insert tempdb..test_student values (101002, 101, 'Name 2', 21, 'Address 2');
26 insert tempdb..test_student values (101003, 101, 'Name 3', 20, 'Address 3');
27 insert tempdb..test_student values (102001, 102, 'Name 4', 22, 'Address 4');
28 insert tempdb..test_student values (102002, 102, 'Name 5', 21, 'Address 5');
29 insert tempdb..test_student values (201001, 201, 'Name 6', 23, 'Address 6');
30 insert tempdb..test_student values (201002, 201, 'Name 7', 22, 'Address 7');
31 insert tempdb..test_student values (202001, 202, 'Name 8', 22, 'Address 8');

Mybatis高级结果映射

<创建实体类Entity>

 1 package mybatistest;
 2 
 3 import java.io.Serializable;
 4 
 5 public class Clazz implements Serializable {
 6 
 7     private static final long serialVersionUID = 1L;
 8 
 9     private Integer classId;
10 
11     private String className;
12 
13     private String classAdminName;
14 
15     public Integer getClassId() {
16         return classId;
17     }
18 
19     public void setClassId(Integer classId) {
20         this.classId = classId;
21     }
22 
23     public String getClassName() {
24         return className;
25     }
26 
27     public void setClassName(String className) {
28         this.className = className;
29     }
30 
31     public String getClassAdminName() {
32         return classAdminName;
33     }
34 
35     public void setClassAdminName(String classAdminName) {
36         this.classAdminName = classAdminName;
37     }
38 
39     @Override
40     public String toString() {
41         return "Clazz [classId=" + classId + ", className=" + className + ", classAdminName=" + classAdminName + "]";
42     }
43 }
Class

相关文章: