分為兩部分:解析和使用
解析
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,否知會拿不到實體類的屬性