明明如月 QQ  605283073

本科英语翻译专业  研究生  软件工程专业  爱好JAVA 学习2年+

纯粹爱好,利用业余时间翻译。首次尝试翻译  有不足请见谅。

4.1.5 Result Maps

结果映射(ResultMap) 是 MyBatis框架中最重要和强大的元素.

它为你节省从JDBC结果集中获取数据90%的代码,在某些情况下甚至提供给JDBC都不支持的功能。

实际上,写一些比如含有join的复杂语句映射的等价代码甚至需要上千行代码。结果映射(ResultMaps)设计的简洁语句不需要明确的结果映射,甚至更复杂的语句仅需要必须的关系描述。

你已经见识过了没有明确结果映射(ResultMap)的简单映射的例子,如下:

<select id="selectUsers" resultType="map">
select id, username, hashedPassword
from some_table
where id = #{id}
</select>

这个语句将所有列自根据指定的  resultType (结果类型) 自动映射到 HashMap 的 key (键)中。虽然在多数场合非常有用,但是 HashMap 不能作很好的模型域。你的应用程序将更可能的用 JavaBean 或者 POJOs 作为模型域。 MyBatis 对这两种都支持。让我们看下下面的 JavaBean:

package com.someapp.model;
public class User
{
private int id;
private String username;
private String hashedPassword;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getHashedPassword() {
return hashedPassword;
}
public void setHashedPassword(String hashedPassword) {
this.hashedPassword = hashedPassword;
}
}

基于JavaBean风格的上述类包含3个属性:id,username,hashedPassword。这3个属性名好选择语句中的类名完全相同。这种JavaBean可以像HashMap一样非常容易的映射到ResultSet(结果集)中。

<select id="selectUsers" resultType="com.someapp.model.User">
select id, username, hashedPassword
from some_table
where id = #{id}
</select>

记住 TypeAliases( 类型别名 ) 是你的朋友。要学会使用类型别名以便你不用输入完整的类路径。例如:

<!-- In Config XML file -->
<typeAlias type="com.someapp.model.User" alias="User"/>
<!-- In SQL Mapping XML file -->
<select id="selectUsers" resultType="User">
select id, username, hashedPassword
from some_table
where id = #{id}
</select>

在这些情况下 MyBatis 在幕后自动创建结果集( ResultMap )根据名字自动映射列到 JavaBean 对应的属性中。如果列名并不完全匹配你可以用查询语句列的别名(标准的 sql 风格)来让标签匹配。例如:

<select id="selectUsers" resultType="User">
select
user_id as "id",
user_name as "userName",
hashed_password as "hashedPassword"
from some_table
where id = #{id}
</select>

ResultMaps的伟大之处在于,你学的很多,但是还没亲眼见识到他的效果!

这些简单的例子就需要你所见的这么点配置。

为了演示起见,让我们看看如果用另外一种外部结果映射(ResultMap)的方式去解决如上例中列名和属性名不匹配的问题。

<resultMap id="userResultMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="user_name"/>
<result property="password" column="hashed_password"/>
</resultMap>

这个语句参考结果映射(ResultMap)属性来实现(请注意:我们移除了结果类型)。例如:

<select id="selectUsers" resultMap="userResultMap">
select user_id, user_name, hashed_password
from some_table
where id = #{id}
</select>

现在如果世界总是这么简单该多好。

MyBatis 3.2.8 用户手册 4.1.5 Result Maps相关推荐

  1. mybatis 项目启动时报“Result Maps collection already contains value forxxx”错误

    在使用mybatis的逆向工程生成代码时报错,"Result Maps collection already contains value forxxx"有可能是如下原因: 生成的 ...

  2. mybatis报错解决办法 :Result Maps collection does not contain value for java.lang.String

    错误 java.lang.IllegalArgumentException: Result Maps collection does not contain value for java.lang.S ...

  3. Spring集成Mybatis错误Result Maps collection already contains value for XXX

    Spring在集成Mybatis出现如下错误: SpringResult Maps collection already contains value for com.guowei.maven.fra ...

  4. mybatis报错(三)报错Result Maps collection does not contain value for java.lang.Integer解决方法...

    转自:https://blog.csdn.net/zengdeqing2012/article/details/50978682 1 [WARN ] 2016-03-25 13:03:23,955 - ...

  5. Mybatis错误 Result Maps collection already contains value for xxx

    使用mybatis  启动项目失败 错误信息: org.springframework.beans.factory.BeanCreationException: Error creating bean ...

  6. mybatis报错:Result Maps collection already contains value for model.dao.UserMapper.BaseResultMap

    数据库:8.0.11 数据库驱动包为:mysql-connector-java-8.0.11.jar 使用Mybatis-Generator自动生成Dao.Model.Mapping相关文件后,把文件 ...

  7. mybatis启动报错Result Maps collection already contains value for xxx

    背景: mybatis配置xml启动的时候报错,提示Result Maps collection already contains value for xxx. 原因分析: 同一个xml文件里写的sq ...

  8. mybatis(错误一) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案

    关于这个问题,网上解答很嘈杂,不同的人遇到的实际问题也不尽相同.今天启动项目时报了这个错,查了很长时间,下面就这个问题列举了一些可能出错的地方. 逆向生成的时候,存在多个数据库,表名相同,这样Resu ...

  9. mybatis(错误二) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案

    一 项目启动时,报错信息如下: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configurat ...

最新文章

  1. GitHub 的微服务架构设计与实践
  2. IT顾问成长分享沙龙
  3. SpringBoot+jquery实现post提交表单并添加隐藏域属性完成编辑功能
  4. SAP Spartacus 里的三种table类型
  5. web布局固定宽度+变化宽度实现思路
  6. 轻松构建基于 Serverless 架构的弹性高可用视频处理系统
  7. android蓝牙串口通讯
  8. iOS不同版本适配问题
  9. pandas创建和文件读取笔记(一)
  10. Oracle XE http端口8080的修改
  11. QT中文乱码深度剖析
  12. 关于Fragment 不响应onActivityResult的情况分析
  13. 高质量C编程00-汇总
  14. 斐波那契java_递归之斐波那契数列java的3种方法
  15. 帝云CMS内容管理系统
  16. django 过滤器 、日期格式化参数
  17. 计算机网络职业评估报告,计算机网络技术专业个人职业生涯规划书.doc
  18. jQuery 效果 - 淡入淡出,fadeIn,fadeOut,fadeToggle的使用
  19. 【EasyRL学习笔记】第五章 Proximal Policy Optimization 近端策略优化算法
  20. Electron编译报错:include: could not find: ****StdUtils.nsh“的解决

热门文章

  1. 用c语言如何制作抖动窗口,C语言实现自动给QQ好友发窗口抖动
  2. 2018-2019-2学号20189220余超《移动平台应用程序开发实践》课程总结
  3. Redis 存入key乱码问题
  4. 怎样隐藏计算机中的文件夹,电脑上的文件夹不想被别人看到怎么办?如何隐藏电脑文件夹?-电脑文件夹怎么加密...
  5. Python人工智能基础到实战课程-北方网视频
  6. Unity3d游戏开发之C#开发(一)
  7. 如何找win10 软件商店里下载的python路径并删除
  8. 入侵检测与防御技术基础
  9. Epub格式怎么转换成PDF格式?这个方法轻松解决
  10. 计算机毕业设计ssm高校学生社团管理系统n4pcu系统+程序+源码+lw+远程部署