mybatis属性的示例分析

  介绍

这篇文章给大家分享的是有关mybatis属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

前言

mybatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是mybatis为我们提供这种理想与现实间转换的手段了,而resultMap就是结果集映射的配置标签了。
在深入resultMap标签前,我们需要了解从SQL查询结果集到JavaBean或POJO实体的过程。

从SQL查询结果到领域模型实体

<李>

通过JDBC查询得到ResultSet对象

<李>

遍历结果集对象并将每行数据暂存到HashMap实例中,以结果集的字段名或字段别名为键,以字段值为值

<李>

根据resultMap标签的类型属性通过反射实例化领域模型

<李>

根据resultMap标签的类型属性和id、结果等标签信息将HashMap中的键值对,填充到领域模型实例中并返回

一、resultMap

1,属性说明

<李>

id属性,resultMap标签的标识。

<李>

类型属性,返回值的全限定类名,或类型别名。

<李>

地图属性,值范围真实(默认值)|假,设置是否启动自动映射功能,自动映射功能就是自动查找与字段名小写同名的属性名,并调用setter方法。而设置为假后,则需要在<代码> resultMap>

2,基本作用:建立SQL查询结果字段与实体属性的映射关系
示例1:通过setter构造领域模型

public  class  EStudent {private 才能;long  id;,, private  String 名称;,,private  int 年龄;,,//,getter、setter方法,,/* *   ,,*,必须提供一个无参数的构造函数   ,,*/,,public  EStudent () {}   }
 & lt; select  id=癵etStudent", resultMap=癵etStudentRM"比;
  SELECT 才能;ID、姓名,年龄
  ,才能得到TStudent
  & lt;/select>
  & lt; resultMap  id=癵etStudentRM",类型=癊Studnet"比;
  & lt;才能id 财产=癷d",列=癷d"/比;
  & lt;才能result 财产=皊tudentName",列=癗ame"/比;
  & lt;才能result 财产=皊tudentAge",列=癆ge"/比;
  & lt;/resultMap> 

子元素说明:

<李>

id元素,用于设置主键字段与领域模型属性的映射关系

<李>

结果元素,用于设置普通字段与领域模型属性的映射关系

id,因此语句属性配置细节:

属性描述财产需要映射到JavaBean的属性名称.column数据表的列名或者标签别名.javaType一个完整的类名,或者是一个类型别名。如果你匹配的是一个JavaBean,那MyBatis通常会自行检测到,然后,如果你是要映射到一个HashMap,那你需要指定将javaType要达到的目的.jdbcType数据表支持的类型列表。这个属性只在插入、更新或删除的时候针对允许空的列有用.JDBC需要这项,但MyBatis不需要。如果你是直接针对JDBC编码,且有允许空的列,而你要指定这项.typeHandler使用这个属性可以覆写类型处理器。这项值可以是一个完整的类名,也可以是一个类型别名。

示例2:通过构造函数构造领域模型

& lt; select  id=癵etStudent", resultMap=癵etStudentRM"比;   SELECT 才能;ID、姓名,年龄       FROM TStudent                

子元素说明:

  • constructor元素 ,指定使用指定参数列表的构造函数来实例化领域模型。注意:其子元素顺序必须与参数列表顺序对应

  • idArg子元素 ,标记该入参为主键

  • arg子元素 ,标记该入参为普通字段(主键使用该子元素设置也是可以的)

3、一对一关系、一对多关系查询

 注意:在采用嵌套结果的方式查询一对一、一对多关系时,必须要通过resultMap下的id或result标签来显式设置属性/字段映射关系,否则在查询多条记录时会仅仅返回最后一条记录的情况。
association联合

mybatis属性的示例分析