`
西蜀石兰
  • 浏览: 119017 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mybatis参数resultType和resultMap一些解释

 
阅读更多
先贴上官方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在处理分布查询时的灵活性,以及`resultType`和`resultMap`在结果映射中的重要性。对于初学者来说,理解并熟练掌握这些概念,将有助于提升MyBatis的使用效率和代码质量。在实际...

    MyBatis中关于resultType和resultMap的区别介绍

    在MyBatis中,`resultType` 和 `resultMap` 是两种不同的方式,用于处理SQL查询结果到Java对象的映射。理解它们的区别对于优化MyBatis映射文件的编写和提升代码的可维护性至关重要。 1. **resultType**: - `...

    深入理解Mybatis中的resultType和resultMap

    在MyBatis中,resultType和resultMap是两种不同的方式,用于处理SQL查询结果到Java对象的映射。这两种方式各有特点,适用于不同场景。 **一、resultType** resultType是MyBatis中最简单的结果映射方式,它直接指定...

    MyBatis_sql-resultMap-缓存

    总的来说,`resultMap`和缓存机制是MyBatis提高开发效率和系统性能的关键要素。理解并合理运用它们,可以有效地提升你的项目开发体验和应用性能。在实际开发中,根据业务需求,灵活配置和管理`resultMap`,以及适当...

    Mybatis中的resultType和resultMap查询操作实例详解

    在MyBatis中,`resultType` 和 `resultMap` 是两种不同的结果集映射方式,它们用于将数据库查询的结果转换为Java对象。在处理查询返回的数据时,这两个概念是至关重要的。 `resultType` 是一种简单的方式,它直接...

    MyBatis中resultMap和resultType的区别详解

    MyBatis中resultMap和resultType的区别详解 MyBatis是当前最流行的持久层框架之一,它提供了强大的SQL映射能力和灵活的配置机制。在MyBatis中,我们经常会遇到resultMap和resultType这两个概念,虽然它们都用于将...

    MyBatis的resultMap详解

    MyBatis resultMap 详解 MyBatis 中的 resultMap 是一个非常重要的概念,它负责将查询...MyBatis 的 resultMap 是一个非常强大的工具,它可以帮助我们将查询结果映射到 Java 对象中,使得我们的开发更加方便和高效。

    Mybatis高级-resultMap之collection聚集

    ### Mybatis高级-resultMap之collection聚集 在MyBatis中,`collection`元素主要用于处理一对多的关系映射问题。本文将通过一个具体的示例来详细解释如何利用MyBatis的`collection`元素来实现一对多的数据关联。 #...

    解决mybatis执行SQL语句部分参数返回NULL问题

    使用MyBatis时,需要正确配置resultType和resultMap,以避免部分参数返回NULL的问题。 MyBatis执行SQL语句部分参数返回NULL问题的原因: 1.未正确配置resultType和resultMap。 2.Bean对象的属性名和数据库表的列名...

    MyBatis传入多个参数的问题

    ### MyBatis传入多个参数的问题 在使用MyBatis框架进行数据库操作时,经常会遇到需要向SQL查询语句传入多个参数的情况。本文将详细介绍几种常见的多参数传递方法,并结合具体的代码示例来帮助读者更好地理解和应用...

    MyBatis入门到精通

    MyBatis通过`resultType`或`resultMap`属性进行配置。 9. **级联操作** MyBatis支持一对多、多对多的复杂关联映射,通过`association`和`collection`标签,可以实现级联查询和更新。 10. **缓存机制** MyBatis...

    mybatis中文教程

    七、MyBatis的参数和结果映射 MyBatis支持多种参数类型,包括简单类型、复杂对象、Map等。通过#{param}占位符方式传递参数。对于复杂查询结果,可以使用resultMap定义多个结果映射,处理一对一、一对多、多对多关系...

    MyBatis基本配置和简单的增删改查

    - **`settings`**:这是MyBatis的核心配置,可以设置一些全局参数,如缓存、延迟加载等。 - **`typeAliases`**:定义别名,方便在XML映射文件中使用类名。 - **`environments`**:定义数据库环境,包括开发、测试和...

    MyBatis中文参考文档

    MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 一、...

    springmybatis

    其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值的接口(比如IUserOperation.class),这样现在就可以至此那个更简单,更安全的代码,没有容易发生的字符串文字和转换的错误.下面是详细...

    mybatis-3.5.9.zip

    MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC...在"Mybatis-3.5.9"这个版本中,可能还会包含一些优化和修复的bug,为开发者提供了更加稳定和高效的服务。

    MyBatis学习-映射文件标签篇(select、resultMap).rar_alikeett_blueaod_mybatis

    本资料主要探讨的是MyBatis中的两个关键标签:`select`和`resultMap`,这两个标签在映射文件中起着至关重要的作用。 `select`标签是MyBatis用于执行SQL查询的标签,它允许我们将SQL语句嵌入到XML配置文件中。`...

Global site tag (gtag.js) - Google Analytics