先贴上官方API路径示敬,果然还是文档写的清楚
http://my.oschina.net/mutianya/blog/168268
resultMap 元素是 MyBatis 中最重要最强大的元素。它就是让你远离 90%的需要从结果 集中取出数据的 JDBC 代码的那个东西。(官方原话)
一直不太清楚,明明resultType比resultMap用起来方便,为什么还有后者。看了文档大约明白了些。
resultType是结果集的一个映射,可以简单的写成resultType="map"或者resultType="hashmap",其中"map"和"hashmap"都是mybatis能够识别的别名,写成"java.util.HashMap"当然也没有问题,在java代码端,是这么写的:
List<Map<String,Object>> list =sqlSession.selectList("User.test");
for(Map<String,Object> map :list){
System.out.println(map.get("id"));
}
通过map.get("key"),就可以获取你需要的结果。
然而, HashMap 不能很好的描述一个领域模型。那样你的应用程序将会使用 JavaBeans 或 POJOs(Plain Old Java Objects,普通 Java 对象)来作为领域模型。也就是常用的实体类,比如:
package entity;
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
此时,resultType="entity.User"。当然,如果包名太长,也可以使用自定义的别名,标签如下:
<typeAlias type="com.someapp.model.User" alias="User"/>
这样就能简化标签内的代码resultType="User"
写到这里,似乎并没有resultMap什么事,实际上,在进行了上诉的配置之后,mybatis会在幕后自动创建一个 ResultMap,基于属性名来映射列到 JavaBean 的属性上,当然也可以使用sql别名来映射。
如果不使用resultType,也可以直接使用resultMap,配置如下:
<resultMap id="userResultMap" type="entity.User">
<id property="id" column="sort " />
<result property="name" column="shardname"/>
</resultMap>
<select id="test" resultMape="userResultMap">
select shardname,sort from tbl_system_popedom
</select>
column是sql查出来对应的列名,property对应实体中的变量名。使用resultType时,两者需要相同的缘故就在这里了,否则mybatis不知道如何进行映射。深层次的原因,还需要去看源码。
上面这个例子,大约能够解释resultMap和resultType的区别了,说白了,即便使用resultType,mybatis也将使用resultMap进行查询结果的映射。只是映射过程我们是看不见的,方便写代码。
resultMap中id和result的区别:这两者之间的唯一不同是id 表示的结果将是当比较对象实例时用到的标识属性。这帮助来改进整体表现,特别是缓存和嵌入结果映射(也就是联合映射) 。官方原话,简单的理解,就是当某一个列是唯一索引时,用id标签,提高效率。
PS:parameterType也有一个类似的parameterMap,不过后者已经被弃用了,所以少侠们就不用去纠结两者的区别了。
分享到:
相关推荐
通过以上内容,我们可以了解到MyBatis在处理分布查询时的灵活性,以及`resultType`和`resultMap`在结果映射中的重要性。对于初学者来说,理解并熟练掌握这些概念,将有助于提升MyBatis的使用效率和代码质量。在实际...
在MyBatis中,`resultType` 和 `resultMap` 是两种不同的方式,用于处理SQL查询结果到Java对象的映射。理解它们的区别对于优化MyBatis映射文件的编写和提升代码的可维护性至关重要。 1. **resultType**: - `...
在MyBatis中,resultType和resultMap是两种不同的方式,用于处理SQL查询结果到Java对象的映射。这两种方式各有特点,适用于不同场景。 **一、resultType** resultType是MyBatis中最简单的结果映射方式,它直接指定...
总的来说,`resultMap`和缓存机制是MyBatis提高开发效率和系统性能的关键要素。理解并合理运用它们,可以有效地提升你的项目开发体验和应用性能。在实际开发中,根据业务需求,灵活配置和管理`resultMap`,以及适当...
在MyBatis中,`resultType` 和 `resultMap` 是两种不同的结果集映射方式,它们用于将数据库查询的结果转换为Java对象。在处理查询返回的数据时,这两个概念是至关重要的。 `resultType` 是一种简单的方式,它直接...
MyBatis中resultMap和resultType的区别详解 MyBatis是当前最流行的持久层框架之一,它提供了强大的SQL映射能力和灵活的配置机制。在MyBatis中,我们经常会遇到resultMap和resultType这两个概念,虽然它们都用于将...
MyBatis resultMap 详解 MyBatis 中的 resultMap 是一个非常重要的概念,它负责将查询...MyBatis 的 resultMap 是一个非常强大的工具,它可以帮助我们将查询结果映射到 Java 对象中,使得我们的开发更加方便和高效。
### Mybatis高级-resultMap之collection聚集 在MyBatis中,`collection`元素主要用于处理一对多的关系映射问题。本文将通过一个具体的示例来详细解释如何利用MyBatis的`collection`元素来实现一对多的数据关联。 #...
使用MyBatis时,需要正确配置resultType和resultMap,以避免部分参数返回NULL的问题。 MyBatis执行SQL语句部分参数返回NULL问题的原因: 1.未正确配置resultType和resultMap。 2.Bean对象的属性名和数据库表的列名...
### MyBatis传入多个参数的问题 在使用MyBatis框架进行数据库操作时,经常会遇到需要向SQL查询语句传入多个参数的情况。本文将详细介绍几种常见的多参数传递方法,并结合具体的代码示例来帮助读者更好地理解和应用...
MyBatis通过`resultType`或`resultMap`属性进行配置。 9. **级联操作** MyBatis支持一对多、多对多的复杂关联映射,通过`association`和`collection`标签,可以实现级联查询和更新。 10. **缓存机制** MyBatis...
七、MyBatis的参数和结果映射 MyBatis支持多种参数类型,包括简单类型、复杂对象、Map等。通过#{param}占位符方式传递参数。对于复杂查询结果,可以使用resultMap定义多个结果映射,处理一对一、一对多、多对多关系...
- **`settings`**:这是MyBatis的核心配置,可以设置一些全局参数,如缓存、延迟加载等。 - **`typeAliases`**:定义别名,方便在XML映射文件中使用类名。 - **`environments`**:定义数据库环境,包括开发、测试和...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 一、...
其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC...在"Mybatis-3.5.9"这个版本中,可能还会包含一些优化和修复的bug,为开发者提供了更加稳定和高效的服务。
本资料主要探讨的是MyBatis中的两个关键标签:`select`和`resultMap`,这两个标签在映射文件中起着至关重要的作用。 `select`标签是MyBatis用于执行SQL查询的标签,它允许我们将SQL语句嵌入到XML配置文件中。`...