Mybatis结果集映射
1.Mybatis在执行语句的时候,会自动创建结果集,所以很多时候不需要显示的定义结果集;
2.那么什么时候需要定义结果集呢?
- 当数据库的列(column)与pojo的属性(Property)不一致的时候
- 多表连接查询(有时数据库需要满足范式的要求,所以多表连接映射才是一个完成的实体),向实体类映射的时候;
3.如何进行结果集映射?
- 方式一:在执行SQL的时候,给数据库的字段 通过 as取别名与 实体类属性一致即可;
- 方式二:自己设置对应的结果集映射;
-
当数据表之间存在一对一,一对多,和多对多的关系的时候;
1 <resultMap id="userResultMap" type="User"> 2 <id property="id" column="user_id" /> 3 <result property="username" column="user_name"/> 4 <result property="password" column="hashed_password"/> 5 </resultMap>
结果映射(resultMap)
constructor
- 用于在实例化类时,注入结果到构造方法中idArg
- ID 参数;标记出作为 ID 的结果可以帮助提高整体性能arg
- 将被注入到构造方法的一个普通结果
id
– 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能result
– 注入到字段或 JavaBean 属性的普通结果association
– 一个复杂类型的关联;许多结果将包装成这种类型- 嵌套结果映射 – 关联可以是
resultMap
元素,或是对其它结果映射的引用
- 嵌套结果映射 – 关联可以是
collection
– 一个复杂类型的集合- 嵌套结果映射 – 集合可以是
resultMap
元素,或是对其它结果映射的引用
- 嵌套结果映射 – 集合可以是
discriminator
– 使用结果值来决定使用哪个resultMap
case
– 基于某些值的结果映射- 嵌套结果映射 –
case
也是一个结果映射,因此具有相同的结构和元素;或者引用其它的结果映射
- 嵌套结果映射 –
努力奔跑,是为了追上曾经被寄予厚望的自己。