-
mybatis resultType和resultMap区别0
前几天做项目用到mybatis,在resultMap中配的collection关联查询,但在select的配置中用的是resultType,程序运行时一直获取不到管理查询的数据,在网上找了写信息,如下:
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。当提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,因为Map不能很好表示领域模型,我们就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。
按照这种说法应该可以获取到关联查询的信息的,很困惑,求解答!2013年8月06日 14:14
2个答案 按时间排序 按投票排序
-
从字面上理解很简单
resultType 就是返回的类型
resultMap 返回的是一个结果集,这个结果集一般是用过resultMap节点来配置的,相应的type一般是一个Model。
而resultType则就是类型,包括了,int,sring,以及类似model这样的Object类型。
需要注意的是如果把返回resultType结果写成resultMap节点配置出来的类似 ModelMap这样的结果集,就会在BuildSession的时候抛空指针。
而IBATIS只是会提示NullPointer,必须加到源代码调试放能看到会提示ClassNotFound,ModelMap找不到。
所以,如果是创建SqlSession的时候出错,提示空指针,那么错误的几种可能就是配置文件的错误
1.SalMapConfig 里面文件路径,文件名
2.Model.xml 里面resultMap映射的时候名字写错。
3.Model.xml 里面的参数错误,例如返回ModelMap写成了model,返回的resultType写成了ModelMap
4.其余的可能都是拼写的错误。2013年8月06日 15:41
-
resultType 就是返回的类型
resultMap 返回的是一个结果集,这个结果集一般是用过resultMap节点来配置的,相应的type一般是一个Model。
而resultType则就是类型,包括了,int,sring,以及类似model这样的Object类型。2013年8月06日 15:00
相关推荐
### Mybatis高级-resultMap之collection聚集 在MyBatis中,`collection`元素主要用于处理一对多的关系映射问题。本文将通过一个具体的示例来详细解释如何利用MyBatis的`collection`元素来实现一对多的数据关联。 #...
在MyBatis中,`resultType` 和 `resultMap` 是两种不同的方式,用于处理SQL查询结果到Java对象的映射。理解它们的区别对于优化MyBatis映射文件的编写和提升代码的可维护性至关重要。 1. **resultType**: - `...
通过以上内容,我们可以了解到MyBatis在处理分布查询时的灵活性,以及`resultType`和`resultMap`在结果映射中的重要性。对于初学者来说,理解并熟练掌握这些概念,将有助于提升MyBatis的使用效率和代码质量。在实际...
MyBatis resultMap 详解 MyBatis 中的 resultMap 是一个非常重要的概念,它负责将查询...MyBatis 的 resultMap 是一个非常强大的工具,它可以帮助我们将查询结果映射到 Java 对象中,使得我们的开发更加方便和高效。
MyBatis中resultMap和resultType的区别详解 MyBatis是当前最流行的持久层框架之一,它提供了强大的SQL映射能力和灵活的配置机制。在MyBatis中,我们经常会遇到resultMap和resultType这两个概念,虽然它们都用于将...
在MyBatis中,resultType和resultMap是两种不同的方式,用于处理SQL查询结果到Java对象的映射。这两种方式各有特点,适用于不同场景。 **一、resultType** resultType是MyBatis中最简单的结果映射方式,它直接指定...
在MyBatis中,`resultType` 和 `resultMap` 是两种不同的结果集映射方式,它们用于将数据库查询的结果转换为Java对象。在处理查询返回的数据时,这两个概念是至关重要的。 `resultType` 是一种简单的方式,它直接...
总的来说,`resultMap`和缓存机制是MyBatis提高开发效率和系统性能的关键要素。理解并合理运用它们,可以有效地提升你的项目开发体验和应用性能。在实际开发中,根据业务需求,灵活配置和管理`resultMap`,以及适当...
在 MyBatis 中,当我们进行查询映射时,有两种返回类型可选:`resultType` 和 `resultMap`。`resultType` 直接指定了返回对象的类型,而 `resultMap` 是引用外部的 ResultMap 配置,两者不能同时使用。默认情况下,...
2. 嵌套结果:当主表和子表的数据在同一查询结果集中时,MyBatis会根据ResultMap来解析并关联这些数据。这种方式适用于主表和子表数据在同一个SELECT语句中返回的情况。 以下是一个简单的例子,展示了如何在MyBatis...
在某些情况下,我们只需要简单地指定`resultType`属性,Mybatis就能自动将查询结果与Java类的字段进行匹配并赋值。下面我们将深入探讨Mybatis结果集自动映射的原理及实例代码。 自动映射主要依赖于以下两个条件: ...
解决该问题的关键是正确配置MyBatis的resultType和resultMap。使用resultType时,MyBatis会自动将查询结果映射到Bean对象上,但是如果Bean对象的属性名和数据库表的列名不一致时,可能会导致部分属性为空。例如,在...
4. **使用Mapper的resultType或resultMap**:配置合理的resultType或resultMap,确保在查询时返回的对象结构能有效避免额外的查询。 5. **使用延迟加载(Lazy Loading)**:MyBatis支持延迟加载,即在真正需要子...
3. 查询(SELECT):使用select标签,可以返回单个对象、集合或Map,通过resultType或resultMap指定结果映射。 4. 删除(DELETE):delete标签,同样支持动态SQL。 六、缓存机制 MyBatis提供了本地缓存和二级缓存,...
- **resultType与resultMap**:如果SQL查询的列名与Java对象的属性名完全匹配,可以省略`resultMap`,直接使用`resultType`指定返回对象的全限定类名。 **二、批量插入数据** 在大数据量的插入操作中,批量插入...
可以设置`resultType`或`resultMap`来映射结果到Java对象。 **6. 参数传递** MyBatis支持多种参数传递方式,如:简单类型、Map、JavaBean等。对于复杂类型的参数,可以使用`@Param`注解。 **7. 结果映射** ...
MyBatis支持自定义复杂的对象结果映射,包括一对一、一对多、多对多的关联映射,以及ResultMap和ResultSetHandler的使用。 九、缓存机制 MyBatis提供了一级缓存和二级缓存,可以有效提高查询效率。一级缓存是...