resultMap的使用

MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转换的手段了,而resultMap就是结果集映射的配置标签了。
在深入ResultMap标签前,我们需要了解从SQL查询结果集到JavaBean或POJO实体的过程。

从SQL查询结果到领域模型实体 

    通过JDBC查询得到ResultSet对象
    遍历ResultSet对象并将每行数据暂存到HashMap实例中,以结果集的字段名或字段别名为键,以字段值为值
    根据ResultMap标签的type属性通过反射实例化领域模型
    根据ResultMap标签的type属性和id、result等标签信息将HashMap中的键值对,填充到领域模型实例中并返回

1、属性说明

    id属性 ,resultMap标签的标识。
    type属性 ,返回值的全限定类名,或类型别名。
    autoMapping属性 ,值范围true(默认值)|false, 设置是否启动自动映射功能,自动映射功能就是自动查找与字段名小写同名的属性名,并调用setter方法。而设置为false后,则需要在resultMap内明确注明映射关系才会调用对应的setter方法。

属性     描述
property     需要映射到JavaBean 的属性名称。
column     数据表的列名或者标签别名。
javaType     一个完整的类名,或者是一个类型别名。如果你匹配的是一个JavaBean,那MyBatis 通常会自行检测到。然后,如果你是要映射到一个HashMap,那你需要指定javaType 要达到的目的。
jdbcType     数据表支持的类型列表。这个属性只在insert,update 或delete 的时候针对允许空的列有用。JDBC 需要这项,但MyBatis 不需要。如果你是直接针对JDBC 编码,且有允许空的列,而你要指定这项。
typeHandler     使用这个属性可以覆写类型处理器。这项值可以是一个完整的类名,也可以是一个类型别名。

转自:https://blog.csdn.net/qq_36826506/article/details/81941258

posted @ 2019-01-15 11:32  当时年少wr  阅读(782)  评论(0)    收藏  举报