问题表现

今天遇到个很诡异的问题,自己写了一个查询sql,发现Order变量只有部分数据有值,其他都是null,对了好久字段是不是命名错了都没发现啥问题,最后才发现是用错resultType的锅。
查询sql:
mapper:

<select id="selectByOrderNo" resultType="com.xxx.Order">select<include refid="column_List"/>from t_orderwhere order_no=#{orderNo}
</select>

Do:

public class Order {private Integer executeCount;private Long nextExecuteTime;private Integer status;private String env;private String orderNo;
}

结果:

{"executeCount" = null"nextExecuteTime" = null"status" = 2"env" = "pre""orderNo" = null
}

问题分析

数据库里这条数据都是有值的,但debug过程中只有部分有值。从结果看出Order属性变量名与表字段名一致的字段有值,不相同的为null,这就说明是因为数据间关系没有映射上。

resultType与resultMap

这两种都是mybatis查询数据数据库时的返回类型,那他们在使用上有什么区别呢?

1.如果只是返回一个值,比如说String或者int,那直接用resultType就行了

<select id="getEnv" resultType="java.lang.String">select env from t_order where id=#{id}
</select>

2.如果sql查询结果返回的列名和实体类中的字段名一致,可以使用resultType,MyBatis会自动把查询结果赋值给和字段名一致的字段

public class Urder {private Long id;private String userName;private String sex;
}

3.如果不一致,mapper里的sql语句中可以使用别名的方式使其一致。

<select id="getUserName" resultType="com.xxx.User">select user_name as userName, sex from t_user
</select>

4.当sql的列名和实体类的列名不一致,这时就可以使用resultMap了

<resultMap id="userMap" type="com.xxx.User"><id property="id" column="id"/><result property="userName" column="user_name"/><result property="sex" column="sex"/>
</resultMap>
<select id="getUsers" resultMap="userMap">select id, user_name, sex from t_user
</select>

property是实体类的字段名,column是sql查询的列名

对于简单的映射,resultType和resultMap区别不大。但是resultMap功能更强大,可以通过设置typeHander来自定义实现功能

MyBatis resultType和resultMap的区别相关推荐

  1. oracle resulttype,MyBatis中关于resultType和resultMap的区别介绍

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而re ...

  2. MyBatis -- resultType 和 resultMap

    MyBatis -- resultType 和 resultMap 一.返回类型:resultType 二.返回字典映射:resultMap 一.返回类型:resultType 绝⼤数查询场景可以使用 ...

  3. MyBatis中关于resultType和resultMap的区别

    使用resultType做自动映射时,要注意字段名和POJO的属性名必须一致. 使用resultType做自动映射时,可以不一致.但是你要想不一致.那么就必须在<mapper>标签下,添加 ...

  4. mybatis中resultType和resultMap的区别

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

  5. ResultType和ResultMap的区别

    ResultType和ResultMap都是执行查询语句时返回的结果集 ResultType ResultType相对与ResultMap而言更简单一点.只有满足ORM(Object Relation ...

  6. MyBatis的resultType和resultMap的区别

    在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType:当使 ...

  7. mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数

    mybatis复习02,简单的增删改查 创建数据表 user_info 在项目中创建数据表对应的实体类 UserInfo.java 在pom.xml文件中引入依赖 创建核心配置文件mybatis-co ...

  8. 全面解析resultType和resultMap的区别

    一.解决数据库字段和属性字段不一致问题 开启驼峰命名,这只能解决特定字段不一致问题,如aa_bb映射成aaBb属性: 起别名,别名的名称毫无疑问就是pojo类中属性名,使用了别名就解决了pojo属性和 ...

  9. resultType 与resultMap 的区别

    2019独角兽企业重金招聘Python工程师标准>>> resultType: 使用resultType进行输出映射,只有查出来的列名与pojo中的属性名一致,才能映射成功 resu ...

最新文章

  1. pythonrequest方法_解决Python requests 报错方法集锦
  2. [CSS3]环形进度条
  3. PHP伪类型和伪变量
  4. 如何在gvim中安装autoproto自动显示函数原型
  5. 面试ASP.NET程序员的笔试题和机试题(转,有点意思,答案不是很标准)
  6. 自动部署 php,Jenkins实现PHP的自动部署
  7. ApiBoot - ApiBoot Swagger 使用文档
  8. JavaScript 霸榜、TypeScript 爆发、开源吞噬世界,GitHub 年度报告正式发布!
  9. oracle sqlplus ed,Uedit32与SQLPlus结合使用技巧-数据库专栏,ORACLE
  10. 创业负债累累 | 失败了的我还如何翻盘?是天台见! 我的故事还只是从这件事开始...
  11. C#实现10进制转2进制
  12. 微型计算机原理偏移地址,微机原理及应用复习
  13. 格式工厂 wav 比特率_格式转换不知道用哪款软件好,有格式工厂就够了!
  14. MATLAB 滤波函数的源代码
  15. 城市地铁类毕业论文文献包含哪些?
  16. 发送RST报文的几种可能的情况
  17. NUC的型号说明及其他的一些信息
  18. 直播报名|如何洞察消费者痛点?大数据分析为您支招!
  19. DFT的简单介绍(下)
  20. 基于Java毕业设计晨光文具店进销存系统设计与开发源码+系统+mysql+lw文档+部署软件

热门文章

  1. java multipart/form-data 提交_从零开始实现multipart/form-data数据提交
  2. FAT32文件系统(二)
  3. 简单的了解下关于 VUE 的动态组件和插槽
  4. 树莓派 打印服务器 系统,树莓派之打印服务器篇 - osc_964dc088的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. AGV智能大脑“调度系统”
  6. 时间复杂度和空间复杂度详解带例题(精)
  7. Python-双坐标作图(加图例)
  8. 最小变化法/极限法测定感觉阈限时,有哪些误差?包括时间和空间误差吗?|小白心理-312/347考研答疑
  9. jquery动态向div内追加ul和li
  10. The target table tablename of the UPDATE is not updatable---解决