`

myBatis3之SQL映射的XML文件(resultMap元素之一)

 
阅读更多

myBatis3之SQL映射的XML文件(resultMap元素之一)

----------

 

你已经看到简单映射语句的示例了,但没有明确的resultMap。比如: 

<select id=”selectUsers” parameterType=”int” resultType=”hashmap”> 
	select id, username, hashedPassword 
	from some_table 
	where id = #{id} 
</select> 

这样一个语句简单作用于所有列被自动映射到HashMap的键上,这由resultType属性指定。这在很多情况下是有用的,但是HashMap不能很好描述一个领域模型。那样你的应用程序将会使用JavaBeans或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。这些在select语句中会精确匹配到列名。这样的一个JavaBean可以被映射到结果集,就像映射到HashMap一样简单。 

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

要记住类型别名是你的伙伴。使用它们你可以不用输入类的全路径。比如:

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

这些情况下,MyBatis会在幕后自动创建一个ResultMap基于属性名来映射列到JavaBean的属性上。如果列名没有精确匹配,你可以在列名上使用select字句的别名(一个基本的SQL特性)来匹配标签。比如:  

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

ResultMap最优秀的地方你已经了解了很多了,但是你还没有真正的看到一个。只是出于示例的原因,让我们来看看最后一个示例中外部的 resultMap是什么样子的,这也是解决列名不匹配的另外一种方式。 

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

 引用它的语句使用resultMap属性就行了(注意我们去掉了resultType属性)。比如:

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

 

 

分享到:
评论

相关推荐

    SQL语句映射文件

    SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用。

    Mybatis的映射(sql编写).md

    (类的全路径)"&gt; &lt;resultMap id="BaseResultMap" type="com.tjjp.business.Notice.model.Notice(类的全路径)"&gt; &lt;!-- 对于的类型 jdbcType --&gt; &lt;/resultMap&gt;

    MyBatis3_用户指南(附JavaDB实例)

    SQL 映射 XML 文件.......23 Select元素....... 24 Insert、 update、 delete元素......25 Sql元素.....28 MyBatis 3 - User Guide 4 参数(Parameters)..28 resultMap元素..30 高级结果映射.32 id, result元素.......

    MyBatis-3-User-Guide用户手册(中文英文)

    SQL 映射的 XML 文件 \ 19 select\ 20 insert,update,delete \ 21 sql\ 23 Parameters \ 24 resultMap \ 25 高级结果映射\ 27 id,result \ 29 支持的 JDBC 类型 \ 30 构造方法\ 30 关联\ 31 集合\ 34 ...

    Mybatis的Eclipse插件MyBatipse.zip

    &gt; 重命名 MyBatis 元素在 Java 映射器中,右键单击 -&gt; MyBatis Refactor -&gt; 重命名 MyBatis 元素重命名 Java 映射器方法也会更新其引用Miscellaneous向导创建一个新的 XML 映射文件控制台视图中的智能复制菜单用以...

    springmybatis

    2. Configuration.xml 里面 的&lt;mapper resource="com/yihaomen/mybatis/model/User.xml"/&gt;是包含要映射的类的xml配置文件。 3. 在User.xml 文件里面 主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型...

    mybatis学习笔记

    2.4.2 Mapper.xml(映射文件) 20 2.4.3 Mapper.java(接口文件) 21 2.4.4 加载UserMapper.xml文件 22 2.4.5 测试 22 2.4.6 总结 23 3 SqlMapConfig.xml配置文件 24 3.1 配置内容 24 3.2 properties(属性) 24 3.3 ...

    MyBatis 简单样例

    &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt; &lt;resultMap type="Blog" id="blogResult"&gt; &lt;!...

    GoMybatis:转到ORM库。具有强大的功能,例如事务嵌套,乐观锁,逻辑删除等。 像mybatis一样去golang

    ,与大多数Java(Mybatis3,Mybatis Plus)兼容,从Java Spring Mybatis到Go语言的XML SQL文件无痛迁移(仅修改resultMap的javaType以为langType指定go语言类型) 只需一行标记即可定义AOP事务和事务传播行为 异步...

    mybatis3中文文档

    SQL映射的XML文件 ................................................................................................... 19 select.............................................................................

    MyBatis中文指南,MyBatis中文帮助文档

    SQL映射的XML文件 ................................................................................................... 19 select.............................................................................

    Mybatis入门到精通

    Mybatis介绍、单独使用jdbc编程问题总结、Mybatis架构、Mybatis入门程序、Mybatis开发Dao、SqlMapConfig.xml配置、ParameterType输入映射、ResultType及ResultMap输出映射、动态sql、商品订单数据模型、关联查询(一...

    mybatis-helper:intellij mybatis帮助程序插件

    找到之后会在resultMap中添加转成下划线名称的column,在sql的id含有update的标签中添加该属性, 在insert中增加对应的字段和属性 未完成的部分 是否要自定义字段名,这样提供一个映射关系 是否要把类型和字段名放到...

Global site tag (gtag.js) - Google Analytics