十三、【源码】ResultMap解析

源码地址:https://github.com/mybatis/mybatis-3/

仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/13-resultMap

ResultMap解析

分为两部分:解析和使用

1.解析

  • 解析XML的时候单独解析所有的resultMap标签,封装成ResultMap对象存入configuration中

  • 解析XML中的SQL语句,封装MappedStatement对象,这里会根据SQL的返回类型是resultMap还是resultType做处理。如果是resultMap,就从configuration中取出ResultMap对象设置到MappedStatement中;如果是resultType,就将其封装成一个ResultMap对象设置到MappedStatement中。

2.使用

  • 执行完的结果集会被ResultSetWrapper包装,有两个属性mappedColumnNamesMap和unMappedColumnNamesMap,其实就是如果执行的这个SQL如果是resultMap,mappedColumnNamesMap有值;如果是resultType,那么unMappedColumnNamesMap有值。
  • 做结果集映射,如果是resultMap,执行的是DefaultResultSetHandler#applyPropertyMappings方法,根据resultMap的映射一个个设置值;如果是resultType,执行的是DefaultResultSetHandler#applyAutomaticMappings方法,进行自动映射,这里metaObject.findProperty(propertyName, true);
    使用驼峰要设置为true,否知会拿不到实体类的属性

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值