分为两部分:解析和使用
解析
1.解析XML的时候单独解析所有的resultMap标签,封装成ResultMap对象存入configuration中
2.解析XML中的SQL语句,封装MappedStatement对象,这里会根据SQL的返回类型是resultMap还是resultType做处理。如果是resultMap,就从configuration中取出ResultMap对象设置到MappedStatement中;如果是resultType,就将其封装成一个ResultMap对象设置到MappedStatement中。
使用
1.执行完的结果集会被ResultSetWrapper包装,有两个属性mappedColumnNamesMap和unMappedColumnNamesMap,其实就是如果执行的这个SQL如果是resultMap,mappedColumnNamesMap有值;如果是resultType,那么unMappedColumnNamesMap有值。
2.做结果集映射,如果是resultMap,执行的是DefaultResultSetHandler#applyPropertyMappings方法,根据resultMap的映射一个个设置值;
如果是resultType,执行的是DefaultResultSetHandler#applyAutomaticMappings方法,进行自动映射,这里metaObject.findProperty(propertyName, true);
使用驼峰要设置为true,否知会拿不到实体类的属性