DB_mybatis处理多表联查、多对一和一对多
自定义映射resultMap
resultMap处理字段和属性的映射关系
- 使用resrult若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射,即使字段名和属性名一致的属性也要映射,也就是全部属性都要列出来
1 | <resultMap id="empResultMap" type="Emp"> |
- 可以通过在SQL语句上起别名的方式,保证和实体类中的属性名保持一致 ,例如下面的emp_name
1 |
|
- 设置转化为驼峰,例如:字段名user_name,设置了mapUnderscoreToCamelCase,此时字段名就会转换为userName。
1 | map-underscore-to-camel-case: true |
多对一映射处理
查询员工信息以及员工所对应的部门信息
1 | public class Emp { |
级联方式处理映射关系
1 | <resultMap id="empAndDeptResultMapOne" type="Emp"> |
使用association处理映射关系
- association:处理多对一的映射关系
- property:需要处理多对的映射关系的属性名
- javaType:该属性的类型
1 | <resultMap id="empAndDeptResultMapTwo" type="Emp"> |
分步查询
1. 查询员工信息
- select:设置分布查询的sql的唯一标识(namespace.SQLId或mapper接口的全类名.方法名)
- column:设置分步查询的条件
1 | //EmpMapper里的方法 |
1 | <resultMap id="empAndDeptByStepResultMap" type="Emp"> |
2. 查询部门信息
1 | //DeptMapper里的方法 |
1 | <!--此处的resultMap仅是处理字段和属性的映射关系--> |
一对多映射处理
1 | public class Dept { |
collection
- collection:用来处理一对多的映射关系
- ofType:表示该属性对饮的集合中存储的数据的类型
1 | <resultMap id="DeptAndEmpResultMap" type="Dept"> |
分步查询
1. 查询部门信息
1 | /** |
1 | <resultMap id="DeptAndEmpByStepOneResultMap" type="Dept"> |
2. 根据部门id查询部门中的所有员工
1 | /** |
1 | <!--List<Emp> getDeptAndEmpByStepTwo(@Param("did") Integer did);--> |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jackson Zhang!
评论
ValineDisqus