结果映射的作用

resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了

代码

实体类(已经省略getter和setter方法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package com.ledao.entity;

import java.util.Date;

/**
* 博客实体
*
* @author LeDao
* @company
* @create 2020-09-11 00:08
*/
public class Blog {

/**
* id
*/
private Integer id;
/**
* 标题
*/
private String title;
/**
* 摘要
*/
private String summary;
/**
* 内容
*/
private String content;
/**
* 发布时间
*/
private Date releaseDate;
/**
* 点击次数
*/
private Integer click;
/**
* 博客类别id
*/
private Integer blogTypeId;
/**
* 博客类别
*/
private BlogType blogType;
/**
* 博客里存在的第一张图片,主要用于列表展示的缩略图
*/
private String imageName;
/**
* 博客数量 非博客实际属性 主要是 根据发布日期归档查询数量用到
*/
private Integer blogCount;
/**
* 发布日期的字符串 只取年和月
*/
private String releaseDateStr;
/**
* 该类型的博客数量
*/
private Integer blogNum;
/**
* 用于判断当前IP是否点赞过这篇博客
*/
private Integer isLike;
/**
* 点赞数
*/
private Integer likeNum;
/**
* 是否是导航条文章(0或空代表不是,1代表是)
*/
private Integer isMenuBlog;
/**
* 设置成为导航条文章的时间
*/
private Date setMenuBlogDate;
}

XML文件中的结果映射代码(相关属性查看博客:mybatis的元素属性

1
2
3
4
5
6
7
8
9
10
11
<resultMap id="BlogResult" type="Blog">
<result property="id" column="id"/>
<result property="title" column="title"/>
<result property="summary" column="summary"/>
<result property="releaseDate" column="releaseDate"/>
<result property="click" column="click"/>
<result property="content" column="content"/>
<result property="blogTypeId" column="blogTypeId"/>
<result property="isMenuBlog" column="isMenuBlog"/>
<result property="setMenuBlogDate" column="setMenuBlogDate"/>
</resultMap>