resultMap
一. 案例分析
1. 根据id查用户
2. resultMap
二. resultMap
1. 属性
resultMap包含的所有属性如下。
- id:必填,并且唯一。在select标签中,resultMap指定的值即为此处id所设置的值。
- type:必填,用于配置查询列所映射到的Java对象类型。
- extends :选填,可以配置当前的resultMap继承自其他的resultMap,属性值为继承resultMap的id。
- autoMapping:选填,可选值为true或false,用于配置是否启用非映射字段(没有在resultMap中配置的字段〉的自动映射功能,该配置可以覆盖全局的autoMappingBehavior配置。
2. 标签
resultMap包含的所有标签如下。
- constructor:配置使用构造方法注入结果,包含以下两个子标签。
- idArg: id参数,标记结果作为id(唯一值),可以帮助提高整体性能。
- arg:注入到构造方法的一个普通结果。 - id:一个id结果,标记结果作为id(唯一值),可以帮助提高整体性能。
- result:注入到Java对象属性的普通结果。
- association:一个复杂的类型关联,许多结果将包成这种类型。
- collection:复杂类型的集合。
- discriminator:根据结果值来决定使用哪个结果映射。
- case:基于某些值的结果映射。
2.1 constructor 标签
2.2 id、result 标签 常用
案例
三. resultMap的高级映射
1. 初始化
- 用户和角色
2. 一对一映射
应用场景:
假设在某权限系统中,
一个用户只能拥有一个角色,
1.1 准备工作
1.1 实体对象
1.2 测试方法
1.2 四种映射
1. 自动映射
特点: 一个一个写出来
2. 使用resultMap配置一对一映射
优化userRoleMap
3. resultMap的association标签配置一对一映射
4. association标签的嵌套查询
3. 一对多映射
1. 准备工作
2. collection集合的嵌套结果映射
2.1 多层嵌套
一对多对多 = 一对多 + 一对多
3. collection集合的嵌套查询