resultMap返回的列名与bean的属性名可以不一致,resultType则要求一致。就具体代码作分析。对于指定resultMap属性,直接读取字符串,而对于指定resultType会解析为具体的类.

在使用MappedStatement.Builder设置resultMaps时,对于 resultMap使用逗号作分隔符,得到resultMap列表,而对于resultType只是构建单个resultMap(设置type为resultType的类,resultMappings为空列表)加入到resultMap列表中。

处理映射的分析

因为autoMappingBehavior在没有配置时,默认是PARTIAL,在处理简单映射时shouldApplyAutomaticMappings返回true

对于没有映射的列,会查看bean属性名是否与列名一致。

private List<UnMappedColumnAutoMapping> createAutomaticMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String columnPrefix) throws SQLException {final String mapKey = resultMap.getId() + ":" + columnPrefix;List<UnMappedColumnAutoMapping> autoMapping = autoMappingsCache.get(mapKey);if (autoMapping == null) {autoMapping = new ArrayList<>();final List<String> unmappedColumnNames = rsw.getUnmappedColumnNames(resultMap, columnPrefix);for (String columnName : unmappedColumnNames) {String propertyName = columnName;if (columnPrefix != null && !columnPrefix.isEmpty()) {// When columnPrefix is specified,// ignore columns without the prefix.if (columnName.toUpperCase(Locale.ENGLISH).startsWith(columnPrefix)) {propertyName = columnName.substring(columnPrefix.length());} else {continue;}}final String property = metaObject.findProperty(propertyName, configuration.isMapUnderscoreToCamelCase());if (property != null && metaObject.hasSetter(property)) {if (resultMap.getMappedProperties().contains(property)) {continue;}final Class<?> propertyType = metaObject.getSetterType(property);if (typeHandlerRegistry.hasTypeHandler(propertyType, rsw.getJdbcType(columnName))) {final TypeHandler<?> typeHandler = rsw.getTypeHandler(propertyType, columnName);autoMapping.add(new UnMappedColumnAutoMapping(columnName, property, typeHandler, propertyType.isPrimitive()));} else {configuration.getAutoMappingUnknownColumnBehavior().doAction(mappedStatement, columnName, property, propertyType);}} else {configuration.getAutoMappingUnknownColumnBehavior().doAction(mappedStatement, columnName, (property != null) ? property : propertyName, null);}}autoMappingsCache.put(mapKey, autoMapping);}return autoMapping;}

resultMap和resultType的区别相关推荐

  1. php 数据类型 map,ResultMap和ResultType的区别

    ResultMap和ResultType的区别 使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType:另一种就是resultMap: 1.re ...

  2. resultMap与resultType的区别

    resultmap与resulttype的区别为:对象不同.描述不同.类型适用不同. 一.对象不同 1.resultmap:resultMap如果查询出来的列名和pojo的属性名不一致,通过定义一个r ...

  3. 【MyBatis】resultMap和resultType的区别

    mybatis中resultMap和resultType的区别 mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap.resultType是 ...

  4. resultMap和resultType 的区别?

    1.resultMap 如果查询出来的列名和pojo的属性名不一致时,可以通过resultMap对列名和属性名做映射关系; <resultMap type="com.wuhao.one ...

  5. 在mybatis中resultMap与resultType的区别

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap resultType是直接表示返回类型的,而resultMap则是对外部ResultM ...

  6. Mybatis中resultMap和resultType的区别

    MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性 ...

  7. ibatis中resultMap和resultType使用区别

    resultMap 1.resultMap的值为映射的返回值自定义节点Id名称 resultType 1.resultType的值为返回值的类型,且为一列 ---------------------- ...

  8. mybatis中resultMap和resultType区别,三分钟读懂

    先说结论: resultmap与resulttype的区别为:对象不同.描述不同.类型适用不同. 说人话就是,resultmap和resulttype功能差不多,但是resultmap功能更强大 re ...

  9. resultMap和resultType区别详解

    resultMap和resultType区别详解 resultmap与resulttype的区别为:对象不同.描述不同.类型适用不同 一.对象不同 1.resultmap:resultMap如果查询出 ...

最新文章

  1. spring的依赖注入方式详解
  2. 计算机考试受苦受累,受苦受累真是福作文800字
  3. Java接口存在的意义以及如何解决菱形继承问题
  4. spring cloud的eureka.client.service-url.defaultZone配置eureka集群的写法
  5. 【ArcGIS风暴】ArcGIS创建栅格数据集色彩映射表案例--以GlobeLand30土地覆盖数据为例
  6. tar打包时排除一些文件或者目录
  7. python mongodb 异步_Python异步读写Mongodb(motor+asyncio)
  8. 智能优化算法应用:基于麻雀搜索算法PID参数优化 - 附代码
  9. 发明与实用新型专利了解
  10. 小程序实现圆点边框 解决 dotted不兼容 小程序圆点边框兼容问题 如何在小程序实现兼容的圆点边框
  11. p站自动收藏画作 post请求,request payload
  12. 网络原理:TCP/UDP
  13. 碰撞检测中的K_DOPS算法的研究
  14. android studio release包安装后打不开,debug包安装正常怎么解决
  15. 怎样把不同的文字合并成一组文字文本?
  16. pg_walsender
  17. Dockerfile及相关知识拓展
  18. 标签打印软件如何制作珠宝标签
  19. 内存快照:宕机后,Redis如何实现快速恢复?
  20. 流利说 l4测试 口语_为什么要现在开始学口语

热门文章

  1. zigbee学习之路(二)点亮LED
  2. javascript正则表达式介绍
  3. oracle查询表的索引
  4. css selector list
  5. android app 历史版本,怎么找到App的所有历史版本,以及每次改版的变更点呢?
  6. 自学python什么时候能够兼职-总结下我是如何利用python在闲余时间月赚5千外快...
  7. python编程语言的缺点-常见的AI编程语言优缺点比较,程序员千万不要入错行!...
  8. python官网安装步骤-新手Windows下Python下载安装教程及配置注意事项
  9. python处理csv数据-Python处理csv文件
  10. python工作招聘-爬了招聘网站之后,给你几点学习Python的建议