在MyBatis 3中,结果映射是将数据库查询结果映射到Java对象的过程。MyBatis提供了多种方式来配置结果映射,以下是一些基本的方法:

1. <resultType> 属性

<resultType> 属性用于指定查询结果的映射类型,即返回的Java对象类型。它可以直接指定Java类的全限定名,或者使用别名(type aliases)。
<select id="getUserById" resultType="com.example.model.User">
    SELECT * FROM users WHERE id = #{id}
</select>

在这个例子中,getUserById 方法的查询结果将会映射到 com.example.model.User 类型的对象。

2. <resultMap> 元素

<resultMap> 元素用于定义更复杂的结果映射规则,可以精确地指定数据库列与Java对象属性之间的映射关系。以下是一个简单的 <resultMap> 的例子:
<resultMap id="userResultMap" type="com.example.model.User">
    <id column="id" property="id"/>
    <result column="username" property="username"/>
    <result column="password" property="password"/>
</resultMap>

在这个例子中,userResultMap 定义了如何将数据库查询结果映射到 com.example.model.User 类型的对象。<id> 元素用于定义主键映射规则,<result> 元素用于定义普通字段的映射规则。

3. 自动映射

MyBatis支持自动映射,即根据查询结果的列名自动匹配Java对象的属性名。默认情况下,MyBatis会对查询结果的列名进行下划线到驼峰式的属性名的转换。
<select id="getUserById" resultType="com.example.model.User">
    SELECT user_id AS id, user_name AS username, user_password AS password FROM users WHERE id = #{id}
</select>

在这个例子中,由于查询结果列名和Java对象的属性名匹配,MyBatis会自动进行映射。

4. 嵌套结果映射

通过 <association> 和 <collection> 元素,可以配置嵌套的结果映射,实现复杂对象图的映射关系。
<resultMap id="userResultMap" type="com.example.model.User">
    <id column="id" property="id"/>
    <result column="username" property="username"/>
    <result column="password" property="password"/>
    <association property="profile" resultMap="profileResultMap"/>
</resultMap>

<resultMap id="profileResultMap" type="com.example.model.Profile">
    <id column="profile_id" property="id"/>
    <result column="email" property="email"/>
    <result column="phone" property="phone"/>
</resultMap>

在这个例子中,userResultMap 中嵌套了一个 profileResultMap,<association> 元素用于配置嵌套的关联关系。

这些是一些基本的结果映射方法。MyBatis还提供了其他高级的结果映射特性,例如鉴别器(discriminator)、构造器映射等,具体可以查阅官方文档:[MyBatis - Result Maps](https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps)。


转载请注明出处:http://www.zyzy.cn/article/detail/7011/MyBatis