MyBatis 3.2.8 用户手册 4.1.5 Result Maps
来源:互联网 发布:中国网络资讯台 山寨 编辑:程序博客网 时间:2024/06/04 22:54
明明如月 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, hashedPasswordfrom some_tablewhere 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, hashedPasswordfrom some_tablewhere 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, hashedPasswordfrom some_tablewhere id = #{id}</select>
在这些情况下MyBatis在幕后自动创建结果集(ResultMap)根据名字自动映射列到JavaBean对应的属性中。如果列名并不完全匹配你可以用查询语句列的别名(标准的sql风格)来让标签匹配。例如:
<select id="selectUsers" resultType="User">selectuser_id as "id",user_name as "userName",hashed_password as "hashedPassword"from some_tablewhere 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_passwordfrom some_tablewhere id = #{id}</select>
现在如果世界总是这么简单该多好。
1 0
- MyBatis 3.2.8 用户手册 4.1.5 Result Maps
- Mybatis框架Result Maps解析
- Mybatis框架Result Maps解析
- mybatis result maps collection already contains value
- Mybatis Result Maps、Auto-mapping、cache
- myBatis抛出异常Result Maps collection already contains value ...
- mybatis result maps collection already contains value解决办法
- MyBatis启动报错Result Maps collection already contains ....
- mybatis result maps collection already contains value解决办法
- Mybatis异常-Result Maps collection already contains value for xxx
- MyBatis报错:Result Maps collection already contains value for .....
- mybatis报错Result Maps collection already contains value for
- mybatis result maps collection already contains value解决办法
- Mybatis错误:Result Maps collection already contains value for ***
- Mybatis用户手册
- MyBatis学习_1_ Result Maps collection does not contain value for *
- Mybatis启动报Result Maps collection already contains value for ...的问题
- mybatis整理笔记MapperXML文件4 -- MapperXML文件中的Result Maps[文章摘自文档]
- 第四章T2
- Android Studio 下项目的依赖配置
- Java中的异常处理
- Java.IO.InputStream.skip() 错误(跳过字节数和预想的不等)
- tcp/ip ---------- 动态选路
- MyBatis 3.2.8 用户手册 4.1.5 Result Maps
- UVA 10815 - Andy's First Dictionary
- 第四章T3
- 【HDU】1828-Picture(线段树扫描线)
- java虚拟机栈溢出
- 第一题
- spring技术详解【转】
- http://my.csdn.net/my/mycsdn
- (结构型模式一)适配器模式