详细参见官方中文文档
resultMap
自定义结果
<resultMap>
: 结果集
id=""
唯一标识type=""
: 数据类型<id>
: – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能
column=""
: 数据库中的列名property=""
: 映射到列结果的字段或属性
<result>
: – 注入到字段或 JavaBean 属性的普通结果
<association>
: – pojo对象
嵌套结果映射 – 关联可以指定为一个 resultMap 元素,或者引用一个
property=""
: 映射到列结果的字段或属性javaType=""
: 一个 Java 类的完全限定名,或一个类型别名(参考上面内建类型别名的列 表) .jdbcType=""
: 在这个表格之前的所支持的 JDBC 类型列表中的类型select=""
: 映射另一个对应查询id
(如果使用联合查询可以不指定)
column=""
: 指定<association>
中的参数查询
<collection>
: – pojo对象的集合
- 大部分和
<association>
相同 property=""
: 指定<association>
中的集合结果javaType=""
: 指定集合类型ofType=""
: 指定集合元素类型column="id"
: 指定<association>
中的参数查询select=""
映射另一个对应查询id
(如果使用联合查询可以不指定)
<id>
|<result>
: 标签同上
<discriminator>
: – 使用结果值来决定使用哪个 resultMap
javaType
: 列值对应的java类型column
: 制定判断的列名
<case>
: 基于某些值的结果映射
value
: 对比的值resultMap
: 指定封装的结果类型
简单结果
<resultMap type="com.po.Student" id="student">
<id column="sid" property="sid"/>
<result column="sname" property="studentname"/>
...
</resultMap>
联合查询
1. 级联属性(clazz.cname
)
<resultMap type="com.po.Student" id="student">
<id column="sid" property="sid"/>
<result column="sname" property="studentname"/>
...
<result column="cid" property="clazz.cid" />
<result column="cname" property="clazz.cname"/>
</resultMap>
2. 指定类型association
<resultMap type="com.po.Student" id="student">
<id column="sid" property="sid"/>
<result column="sname" property="studentname"/>
...
<association property="clazz" javaType="com.po.Clazz">
<id column="cid" property="cid" />
<result column="cname" property="cname"/>
</association>
</resultMap>
指定类型,并调用查询方法
<resultMap type="com.po.Student" id="student">
<id column="sid" property="sid"/>
<result column="sname" property="studentname"/>
<result column="sid" property="sid"/>
...
<association
property="clazz"
javaType="com.po.Clazz"
select="getClazzById"
column="cid"
>
<id column="cid" property="cid" />
<result column="cname" property="cname"/>
</association>
</resultMap>
- 结果会先查询学生信息
- 在根据cid的值查询班级
- 并封装到对象中
指定集合,并调用查询方法
<resultMap type="com.po.Clazz" id="clzz">
<id column="cid" property="cid"/>
<result column="cname" property="cname"/>
<collection property="posts" ofType="domain.blog.Post">
<id property="id" column="post_id"/>
<result property="subject" column="post_subject"/>
</collection>
</resultMap>
鉴别器
- 有时候一个单独的数据库查询也可以返回很多不同的数据类型,鉴别器就是用来处理这种情况的
- 它的表现和java中的switch特别相似.