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

来源:互联网 发布:ie浏览器不能登陆淘宝 编辑:程序博客网 时间:2024/05/21 04:38

本文,我们来介绍Mybatis中最重要的最强大的元素。使用resultMap的使用能够将我们查询数据的结果集合在书写配置时一劳永逸。并且,其能够支持复杂的数据类型。废话不多讲,开始正文部分吧!

-------------------------------------------------------------------------------------------------------------------------------------

1.首先,我们先来看看基本的映射语句,如下:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <select id="findUserById" resultType="userResultMap">  
  2.   select id,Password  
  3.   from sysuser  
  4.   where id = #{id}  
  5. </select>  
2.对应的属性resultType="map",需要在mapper文件中加入如下内容:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <resultMap id="userResultMap" type="User">  
  2.   <id property="id" column="id" />  
  3.   <result property="password" column="password"/>  
  4. </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 类型。

BITFLOATCHARTIMESTAMPOTHERUNDEFINEDTINYINTREALVARCHARBINARYBLOGNVARCHARSMALLINTDOUBLELONGVARCHARVARBINARYCLOBNCHARINTEGERNUMERICDATELONGVARBINARYBOOLEANNCLOBBIGINTDECIMALTIMENULLCURSORARRAY3.对应的User对象为如下内容:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.csdn.ingo.entity;  
  2.   
  3. import java.io.Serializable;  
  4. /** 
  5. *@author 作者 E-mail:ingo 
  6. *@version 创建时间:2016年4月17日下午6:25:27 
  7. *类说明 
  8. */  
  9. @SuppressWarnings("serial")  
  10. public class User implements Serializable{  
  11.       
  12.     private String id;  
  13.     private String password;  
  14.     public String getId() {  
  15.         return id;  
  16.     }  
  17.     public void setId(String id) {  
  18.         this.id = id;  
  19.     }  
  20.     public String getPassword() {  
  21.         return password;  
  22.     }  
  23.     public void setPassword(String password) {  
  24.         this.password = password;  
  25.     }  
  26.     public User(String id, String password) {  
  27.         super();  
  28.         this.id = id;  
  29.         this.password = password;  
  30.     }  
  31.     public User() {  
  32.         super();  
  33.         // TODO Auto-generated constructor stub  
  34.     }  
  35. }  
4.在某些情况下,我们没有使用resultmap,并且数据库中的列名与java对象的属性名不是一一对应的,就需要采用如下的方法,进行匹配。具体写法如下:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <select id="selectUsers" resultType="User">  
  2.   select  
  3.     user_id           as "id",  
  4.     user_password     as "password"  
  5.   from sysuser  
  6.   where id = #{id}  
  7. </select>  
-------------------------------------------------------------------------------------------------------------------------------------

假如,我们的查询都是如此简单,世界该多么美好!!!

欲知后事如何,且听下回分解。。。

-------------------------------------------------------------------------------------------------------------------------------------

至此,Mybatis最入门---ResultMaps基本用法结束


0 0