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 ...
最新文章
- 拿大厂机器学习岗 offer,吐血整理的面试秘籍!
- C++ sizeof与strlen
- MATLAB实战系列(九)-遗传算法(GA)求解旅行商问题(TSP)思路解析
- 微信小程序+微信公众号开发总结
- 云服务器安装操作系统后如何连接,服务器如何安装操作系统
- CENTOS5下VSFTPD的设置
- Java 200+ 面试题补充 ThreadLocal 模块
- python自动化测试常见面试题二_思考|自动化测试面试题第二波
- 基于JAVA+SpringMVC+Mybatis+MYSQL的校园订餐点餐外卖管理系统
- Leetcode每日一题:50.powx-n
- 编译内核出错:invalid option `abi=aapcs-linux'
- arcgis图层叠加不匹配
- Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)
- python操作数据库之删除数据
- thinkphp5 两个控制器传参数_Thinkphp5代码执行学习
- 互联网视频直播技术(广电总局、优酷土豆、XX直播)
- word转变pdf插件
- w ndows键是哪一个,Win10截图快捷键是哪个?Windows10自带截屏快捷键使用方法大全...
- 一位硕士毕业生三个月求职经历与经验结晶【转帖】
- kettle 资源库 配置信息