[一步是咫尺,一步即天涯]
本文,我们来介绍Mybatis中最重要的最强大的元素。使用resultMap的使用能够将我们查询数据的结果集合在书写配置时一劳永逸。并且,其能够支持复杂的数据类型。废话不多讲,开始正文部分吧!
-------------------------------------------------------------------------------------------------------------------------------------
1.首先,我们先来看看基本的映射语句,如下:
<select id="findUserById" resultType="userResultMap"> select id,Password from sysuser where id = #{id} </select>2.对应的属性resultType="map",需要在mapper文件中加入如下内容:
<resultMap id="userResultMap" type="User"> <id property="id" column="id" /> <result property="password" column="password"/> </resultMap>
解释如下:
外层“id”属性:即sql语句用引用的标识,其值需要在该文件中具有唯一性。
外层“type”属性:即结果返回的目标对象(user),这里需要定义为一个全路径标识的对象,或者使用别名的对象。
内层“id”标签:即当前结果集合的主键。
内层“property”属性:即当前结果返回的目标对象的属性(user中的属性)。
内层“column”属性:即在数据库中对应的列名。
除此之外,我们在前文中还提到内层可以使用的属性有
“javaType”:一个 Java 类的完全限定名,或一个类型别名(参考上面内建类型别名 的列表) 。如果你映射到一个 JavaBean,MyBatis 通常可以断定类型。 然而,如果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证所需的行为。
“jdbcType”:在这个表格之后的所支持的 JDBC 类型列表中的类型。JDBC 类型是仅 仅需要对插入,更新和删除操作可能为空的列进行处理。这是 JDBC jdbcType 的需要,而不是 MyBatis 的。如果你直接使用 JDBC 编程,你需要指定 这个类型-但仅仅对可能为空的值。
“typeHandler”:我们在前面讨论过默认的类型处理器。使用这个属性,你可以覆盖默 认的类型处理器。这个属性值是类的完全限定名或者是一个类型处理 器的实现,或者是类型别名。
MyBatis ,支持下面的 JDBC 类型。
BIT | FLOAT | CHAR | TIMESTAMP | OTHER | UNDEFINED |
TINYINT | REAL | VARCHAR | BINARY | BLOG | NVARCHAR |
SMALLINT | DOUBLE | LONGVARCHAR | VARBINARY | CLOB | NCHAR |
INTEGER | NUMERIC | DATE | LONGVARBINARY | BOOLEAN | NCLOB |
BIGINT | DECIMAL | TIME | NULL | CURSOR | ARRAY |
package com.csdn.ingo.entity; import java.io.Serializable; /** *@author 作者 E-mail:ingo *@version 创建时间:2016年4月17日下午6:25:27 *类说明 */ @SuppressWarnings("serial") public class User implements Serializable{ private String id; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public User(String id, String password) { super(); this.id = id; this.password = password; } public User() { super(); // TODO Auto-generated constructor stub } }4.在某些情况下,我们没有使用resultmap,并且数据库中的列名与java对象的属性名不是一一对应的,就需要采用如下的方法,进行匹配。具体写法如下:
<select id="selectUsers" resultType="User"> select user_id as "id", user_password as "password" from sysuser where id = #{id} </select>-------------------------------------------------------------------------------------------------------------------------------------
假如,我们的查询都是如此简单,世界该多么美好!!!
欲知后事如何,且听下回分解。。。
-------------------------------------------------------------------------------------------------------------------------------------
至此,Mybatis最入门---ResultMaps基本用法结束