• 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查询结果字段与实体属性的映射关系

  • 相关阅读:
    R语言—数据框
    考虑关系的图卷积神经网络R-GCN的一些理解以及DGL官方代码的一些讲解
    RPA处理重复工作,助力高效资金管理
    走访名校名企,助力生涯规划
    混沌工程平台 ChaosBlade-Box 新版重磅发布
    从Cookie到设备ID,从算法到云+端!全面盘点设备指纹技术的五代发展
    利用TypeScript 和 jsdom 库实现自动化抓取数据
    测试技能提升篇——了解Tomcat架构需要知道的事儿!
    Mybatis日志框架
    集合的父亲之collection----(单列集合顶级接口)和遍历方式
  • 原文地址:https://blog.csdn.net/qq_45037155/article/details/127967261