• ResultMap详解(处理字段名和属性名不一致)


    一、前言

    Mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。当提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,因为Map不能很好表示领域模型,我们就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。

    二、ResultMap属性说明

    • 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使用这个属性可以覆写类型处理器。这项值可以是一个完整的类名,也可以是一个类型别名。

    三、处理字段名和属性名不一致

    (1)数据库中定义的表的属性名称如图所示

    (2)java类中定义的名字如图所示

    (3)建立SQL查询结果字段与实体属性的映射关系

  • 相关阅读:
    MySQL的卸载与安装
    第三十章 Classes - 方法生成器
    iOS中UIColor,CGColor,CIColor详解
    【微服务|Nacos】Nacos版本相关问题一览
    Meta-Transformer:基于Transformer的多模态感知,融合Token化与共享编码
    写完Numpy100道基础练习题后的错误总结和语法总结
    Google桌面与BBdoc文件管理助手对比分析
    游戏企业如何高质量出海?如何保证出海内容合规
    谷粒商城1.项目简介和项目环境预搭建(项目概述和环境搭建代码)
    使用Kubernetes中的Nginx来改善第三方服务的可靠性和延迟
  • 原文地址:https://blog.csdn.net/qq_45037155/article/details/127967261