Mybatis最入门---ResultMaps基本用法

[一步是咫尺,一步即天涯]

本文,我们来介绍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
3.对应的User对象为如下内容:

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基本用法结束



你可能感兴趣的:(mybatis,配置,jdbcType,resultMap)