ResultMap和ResultType到底有什么区别?
转载请标明出处:https://www.cnblogs.com/Dreamice/
首先,SQL语句执行后返回的结果可以使用 Map 存储,也可以使用 POJO 存储。
一、使用Map存储结果集
下面分别是映射文件以及测试文件代码,其他文件省略
通过resultType="Map"的定义,返回Map
<!-- 查询所有书籍信息:通过resultType="Map"的方式 -->
<!-- 查询所有书籍信息:通过resultType="Map"的方式 -->
<select id="selectAllBookByTypeMap" resultType="Map">
select * from book
</select>
@org.junit.Test
public void test1() {
@Autowired
private BookService bookService;
List<Map> books = bookService.selectAllBookByTypeMap();
System.out.println("通过resultType=\"Map\"的方式:");
System.out.println(books);
}
运行结果:

二、使用Pojo存储结果集
定义Pojo类,特意定义name1属性,为了和数据库中的字段名name不一致
Book.java
public class Book {
private Integer id;
private String name1;
private String author;
//省略getter和setter函数
}
1、使用resultType="Map"
使用resultType="Map"进行查询时,可以通过使用别名的方式,保证自动映射到pojo类的属性名
<!-- 查询所有书籍信息:通过resultType="*.*.pojo"的方式 -->
<select id="selectAllBookByTypePojo" resultType="com.dreamice.pojo.Book">
select id,name name1,author from book
</select>
2、使用resultMap
在映射文件中定义resultMap
<!-- 查询所有书籍信息:通过resultMap="*.*.pojo"的方式 -->
<select id="selectAllBookByRMPojo" resultMap="bookResultMap">
select * from book
</select>
<!-- 定义resultMap-->
<resultMap id="bookResultMap" type="com.dreamice.pojo.Book">
<result property="name1" column="name"/>
</resultMap>
转载请标明出处:https://www.cnblogs.com/Dreamice/
@org.junit.Test
public void test1() {
@Autowired
private BookService bookService;
List<Book> booksPojo = bookService.selectAllBookByTypePojo();
System.out.println("通过resultType=\"*.*.pojo\"的方式:"); System.out.println(booksPojo);
System.out.println(booksPojo.get(0).getName1());
List<Book> booksRMPojo = bookService.selectAllBookByRMPojo();
System.out.println("通过resultMap的方式:");
System.out.println(booksRMPojo);
System.out.println(booksRMPojo.get(1).getName1());
System.out.println(booksRMPojo.get(1).getAuthor());
}
运行结果:

三、区别
所以,区别主要有:
1、查询结果为Map时,使用resultType;
2、简单查询且结果为Pojo类,也可以使用resultType,另外,查询字段名与Pojo属性名不一致,可以通过使用别名的方式;
3、复杂的映射或级联,可以使用resultMap;
转载请标明出处:https://www.cnblogs.com/Dreamice/
ResultMap和ResultType到底有什么区别?的更多相关文章
- ResultMap和ResultType在使用中的区别
在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType:当使 ...
- 转载:ResultMap和ResultType在使用中的区别
在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType:当使 ...
- ResultMap和ResultType在使用中的区别、MyBatis中Mapper的返回值类型
在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType:当使 ...
- mybatis的resultMap与resultType的区别
一.概述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部Res ...
- mybatis中的resultMap与resultType、parameterMap与 parameterType的区别
Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与 parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...
- Mybatis使用时 resultMap与resultType、parameterMap与 parameterType的区别
Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与 parameterType的区别在面试的时候被问到的几率非常高,出现的次数到了令人 ...
- Mybatis中resultMap与resultType区别
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultM ...
- Mybatis第七篇【resultMap、resultType、延迟加载】
resultMap 有的时候,我们看别的映射文件,可能看不到以下这么一段代码: <resultMap id="userListResultMap" type="us ...
- Union和Union All到底有什么区别
以前一直不知道Union和Union All到底有什么区别,今天来好好的研究一下,网上查到的结果是下面这个样子,可是还是不是很理解,下面将自己亲自验证: Union:对两个结果集进行并集操作,不包括重 ...
随机推荐
- 多标签图像分类任务的评价方法-mAP
http://blog.sina.com.cn/s/blog_9db078090102whzw.html 多标签图像分类(Multi-label Image Classification)任务中图片的 ...
- 蓝桥杯 K好数(dp)
Description 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4,L = 2的时候,所有K好数为11.1 ...
- LeetCode——264. 丑数 II
编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 ...
- 量化投资_TB交易开拓者A函数和Q函数详解
//////////////////A函数详解/////////////// //A函数主要在端口上进行下单操作//////////////// A_AccountID说明 返回当前公式应用的交易帐户 ...
- Python2 和 Python3的区别 更新中
py2和py3的区别 1.默认解释器编码 py2: ascii py3: utf-8 2.输入 输出 输入 py2: name = raw_input('请输入你的姓名:') py3: name = ...
- itop4412开发版-安卓系统卸载默认apk使用文档
itop4412开发版的安卓系统默认不是最高权限,可以看见后面最后一个是$符号,如下图 1,所以 想我们需要进入 root 权限,可以看见后面最后一个是#符号,如下图所示.在这个变换中只需 要在超级终 ...
- 6)HTML中a链接跳转地址怎么写
(1)看 thinkphp5的 附录--->助手函数 --->url 利用url进行书写地址跳转: 比如,你想跳转到cate控制器下的lst方法: <a href=" ...
- text-overflow属性
text-overflow属性有两个值, 默认值是clip:当对象内文本溢出时不显示裁切掉. 另一个就是:ellipsis:对象内文本溢出时显示省略标记(...). 使用text-overflow:e ...
- oracle ORA-01461 错误 can bind a LONG value only for insert into a LONG column
我的ORACLE表里没有long字段,可是保存时报错: ORA-01461 :仅可以为插入LONG列的LONG值赋值 本来我这张表里只有一个VARCHAR2(4000)的字段,一直没有这种错误发生 ...
- PHP调试工具PHP DEBUG TOOLS 使用方法
一.安装篇安装前的准备环境:必须得先装X-Debug,至于怎样安装X-Debug请看http://www.xdebug.org/docs/install 1. 从http://www.xdebug.o ...