MyBatis resultType和resultMap的区别
问题表现
今天遇到个很诡异的问题,自己写了一个查询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的区别相关推荐
- oracle resulttype,MyBatis中关于resultType和resultMap的区别介绍
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而re ...
- MyBatis -- resultType 和 resultMap
MyBatis -- resultType 和 resultMap 一.返回类型:resultType 二.返回字典映射:resultMap 一.返回类型:resultType 绝⼤数查询场景可以使用 ...
- MyBatis中关于resultType和resultMap的区别
使用resultType做自动映射时,要注意字段名和POJO的属性名必须一致. 使用resultType做自动映射时,可以不一致.但是你要想不一致.那么就必须在<mapper>标签下,添加 ...
- mybatis中resultType和resultMap的区别
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap resultType是直接表示返回类型的,而resultMap则是对外部ResultM ...
- ResultType和ResultMap的区别
ResultType和ResultMap都是执行查询语句时返回的结果集 ResultType ResultType相对与ResultMap而言更简单一点.只有满足ORM(Object Relation ...
- MyBatis的resultType和resultMap的区别
在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType:当使 ...
- mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
mybatis复习02,简单的增删改查 创建数据表 user_info 在项目中创建数据表对应的实体类 UserInfo.java 在pom.xml文件中引入依赖 创建核心配置文件mybatis-co ...
- 全面解析resultType和resultMap的区别
一.解决数据库字段和属性字段不一致问题 开启驼峰命名,这只能解决特定字段不一致问题,如aa_bb映射成aaBb属性: 起别名,别名的名称毫无疑问就是pojo类中属性名,使用了别名就解决了pojo属性和 ...
- resultType 与resultMap 的区别
2019独角兽企业重金招聘Python工程师标准>>> resultType: 使用resultType进行输出映射,只有查出来的列名与pojo中的属性名一致,才能映射成功 resu ...
最新文章
- pythonrequest方法_解决Python requests 报错方法集锦
- [CSS3]环形进度条
- PHP伪类型和伪变量
- 如何在gvim中安装autoproto自动显示函数原型
- 面试ASP.NET程序员的笔试题和机试题(转,有点意思,答案不是很标准)
- 自动部署 php,Jenkins实现PHP的自动部署
- ApiBoot - ApiBoot Swagger 使用文档
- JavaScript 霸榜、TypeScript 爆发、开源吞噬世界,GitHub 年度报告正式发布!
- oracle sqlplus ed,Uedit32与SQLPlus结合使用技巧-数据库专栏,ORACLE
- 创业负债累累 | 失败了的我还如何翻盘?是天台见! 我的故事还只是从这件事开始...
- C#实现10进制转2进制
- 微型计算机原理偏移地址,微机原理及应用复习
- 格式工厂 wav 比特率_格式转换不知道用哪款软件好,有格式工厂就够了!
- MATLAB 滤波函数的源代码
- 城市地铁类毕业论文文献包含哪些?
- 发送RST报文的几种可能的情况
- NUC的型号说明及其他的一些信息
- 直播报名|如何洞察消费者痛点?大数据分析为您支招!
- DFT的简单介绍(下)
- 基于Java毕业设计晨光文具店进销存系统设计与开发源码+系统+mysql+lw文档+部署软件
热门文章
- java multipart/form-data 提交_从零开始实现multipart/form-data数据提交
- FAT32文件系统(二)
- 简单的了解下关于 VUE 的动态组件和插槽
- 树莓派 打印服务器 系统,树莓派之打印服务器篇 - osc_964dc088的个人空间 - OSCHINA - 中文开源技术交流社区...
- AGV智能大脑“调度系统”
- 时间复杂度和空间复杂度详解带例题(精)
- Python-双坐标作图(加图例)
- 最小变化法/极限法测定感觉阈限时,有哪些误差?包括时间和空间误差吗?|小白心理-312/347考研答疑
- jquery动态向div内追加ul和li
- The target table tablename of the UPDATE is not updatable---解决