MyBatis之结果地图最精华部分

  

案例:https://github.com/sun2shadow/simpleMybatis

resultMap元素是MyBatis中最重要最强大的元素。

先看一个简单的映射:

& lt; select  id=皊electUsers”, resultType=暗赝肌北?   select 才能;id、用户名,hashedPassword   ,得到some_table   where 才能;id =, # {id}   & lt;/select>

它把所有的列映射到HashMap的主键上。但是实践中经常把resultType类型制定为javabean或pojo,如以下语句:

& lt; select  id=皊electUsers”, resultType=癱om.someapp.model.User”比;   select 才能;id、用户名,hashedPassword   ,得到some_table   where 才能;id =, # {id}   & lt;/select>

高级映射是开发中常用的形式:

resultMap概念视图:

<李>

构造函数,类在实例化时,用来注入结果到构造方法中

<李>

idArg - ID参数;标记结果作为ID可以帮助提高整体效能

<李>

参数-注入到构造方法的一个普通结果

<李>

ID -一个ID结果;标记结果作为ID可以帮助提高整体效能

<李>

结果-注入到字段或JavaBean属性的普通结果

<李>

协会——一个复杂的类型关联;许多结果将包成这种类型

<李>

嵌入结果映射——结果映射自身的关联,或者参考一个

<李>

收集-复杂类型的集

<李>

嵌入结果映射——结果映射自身的集,或者参考一个

<李>

鉴别器,使用结果值来决定使用哪个结果映射

<李>

嵌入结果映射——这种情形结果也映射它本身,因此可以包含很多相   ,,,,,,,,,,,同的元素,或者它可以参照一个外部的结果映射。

<李>

案例-基于某些值的结果映射

<标题> ResultMap属性属性描述id当前命名空间中的一个唯一标识,用于标识一个结果图。类类型的全限定名,或者一个类型别名(内置的别名可以参考上面的表格)。地图如果设置这个属性,MyBatis将会为这个ResultMap开启或者关闭自动映射。这个属性会覆盖全局的属性autoMappingBehavior。默认值为:设置。 & lt; resultMap  id=癲etailedBlogResultMap”,类型=安┛汀北?   & lt;/resultMap>

Id&结果

& lt; id 财产=" id ",列=" post_id "/比;   & lt; result 财产=爸魈狻?列=皃ost_subject”/祝辞

id和结果都映射一个单独列的值到简单数据类型(字符   串,整型,双精度浮点数,日期等)的单独属性或字段

<标题> Id和结果属性属性描述财产映射到列结果的字段或属性。如果匹配的是存在的,和给定名称相同   的javabean的属性,那么就会使用,否则MyBatis将会寻找给定名称   财产   的字段。这两种情形你可以使用通常点式的复杂属性导航。比如,你   可以这样映射一些东西:   “用户名”   ,或者映射到一些复杂的东西:   “address.street.number”   .column从数据库中得到的列名,或者是列名的重命名标签。这也是通常和会   传递给resultSet.getString (columnName)方法参数中相同的字符串.javaType一个Java类的完全限定名,或一个类型别名(参考上面内建类型别名   的列表)   ,如果你映射到一个JavaBean, MyBatis通常可以断定类型。   然而,如果你映射到的是HashMap,那么你应该明确地指定将javaType   来保证所需的行为.jdbcType在这个表格之后的所支持的JDBC类型列表中的类型.JDBC类型是仅   仅需要对插入,更新和删除操作可能为空的列进行处理。这是JDBC   jdbcType   的需要,而不是MyBatis的。如果你直接使用JDBC编程,你需要指定   这个类型——但仅仅对可能为空的值.typeHandler我们在前面讨论过默认的类型处理器。使用这个属性,你可以覆盖默   认的类型处理器。这个属性值是类的完全限定名或者是一个类型处理   器的实现,或者是类型别名。

关联:连表查询时需要关联映射关系。属性:博客中作者变量,表列的作者的外建,将javaType关联的实体

& lt; association 财产=白髡摺?列=癰log_author_id”,将javaType=白髡摺北?   & lt;才能id 财产=" id ",列=" author_id "/比;   & lt;才能result 财产=坝没?列=" author_username "/比;   & lt;/association>

MyBatis之结果地图最精华部分