MyBatis 教程

id 和 result 标签

MyBatis 的 id 和 result 标签均是将一个列的值映射到一个简单数据类型(String, int, double, Date 等)的属性或字段。示例如下:

<id property="id" column="post_id"/>
<result property="subject" column="post_subject"/>

id 和 result 标签是结果映射的基础。这两者之间的唯一不同是,id 标签对应的属性会被标记为对象的标识符,在比较对象实例时使用。 这样可以提高整体的性能,尤其是进行缓存和嵌套结果映射(也就是连接映射)的时候。

Id 和 Result 的属性:

属性描述
property映射到列结果的字段或属性。如果 JavaBean 有这个名字的属性(property),会先使用该属性。否则 MyBatis 将会寻找给定名称的字段(field)。无论是哪一种情形,你都可以使用常见的点式分隔形式进行复杂属性导航。比如,你可以这样映射一些简单的东西:“username”,或者映射到一些复杂的东西上:“address.street.number”。
column数据库中的列名,或者是列的别名。一般情况下,这和传递给 resultSet.getString(columnName) 方法的参数一样。
javaType一个 Java 类的全限定名,或一个类型别名(关于内置的类型别名,可以参考上面的表格)。如果你映射到一个 JavaBean,MyBatis 通常可以推断类型。然而,如果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证行为与期望的相一致。
jdbcTypeJDBC 类型,所支持的 JDBC 类型参见这个表格之后的“支持的 JDBC 类型”。只需要在可能执行插入、更新和删除的且允许空值的列上指定 JDBC 类型。这是 JDBC 的要求而非 MyBatis 的要求。如果你直接面向 JDBC 编程,你需要对可以为空值的列指定这个类型。
typeHandler我们在前面讨论过默认的类型处理器。使用这个属性,你可以覆盖默认的类型处理器。这个属性值是一个类型处理器实现类的全限定名,或者是类型别名。

示例

下面将演示怎样使用 id 和 result 标签映射一个 JavaBean,如下:

(1)结果映射XML代码:

<!-- 显示结果集映射 -->
<resultMap id="RESULT_MAP" type="com.hxstrive.mybatis.resultmap.demo1.UserBean">
    <id column="user_id" jdbcType="INTEGER" property="userId" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="sex" jdbcType="VARCHAR" property="sex" />
    <result column="age" jdbcType="INTEGER" property="age" />
</resultMap>

<select id="findAll" resultMap="RESULT_MAP">
    select `user_id`, `name`, `sex`, `age` from `user`
</select>

(2)实体 UserBean 内容如下:

public class UserBean {
	private Integer userId;
	private String name;
	private String sex;
	private Integer age;
	// 忽略 getter 和 setter 方法
}


说说我的看法
全部评论(

复制的官方文档,屁用没有


回复:

多谢指正,后续将改进

关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号