resultMap属性:
id 唯一标识, 需要和
extends 如果多个resultMap有重复映射,可以声明父resultMap,将公共的映射提取出来, 可以减少子resultMap的映射冗余
resultMap对应列属性:
id 主键必须使用 对底层存储有性能作用
column 需要映射的数据库字段名
property 需要映射的pojo属性名
创建dto对象,用resultMap进行映射
property=对象.属性名
2.2 association多对一的查询其中属性:
property:指定的“一”,指定对象中的嵌套对象属性
javaType:类型,property对应的类(一般用全限定名,也可用别名),不常用。
resultMap:调用已存在的映射(resultMap),常用。
注意:强行使我们的结果映射为多对一,即使不是多对一也会强行映射为多对一,并且底层是根据多的id来组织数据的,所以一定要把id查出来。比如:查询人和部门关联查询时,一个部门有多个人,所以要查询人的id
当出现列名和指定的resultMap不一致时:
解决:1.自己制定 2.使用columnPrefix来替换前缀,所以resultMap指定的对象类型我们要提前起好统一的前缀,比如部门就可以统一添加dept_ 其中属性: property:映射一对多的多 ofType:自定义映射,对应多的list集合中指定的泛型(查询部门员工信息中的员工) resultMap:调用已存在的映射,同样当列名和指定的映射名不一致时,使用columnPrefix来替换前缀,所以resultMap指定的对象类型我们要提前起好统一的前缀,比如员工就可以统一添加emp_ 注意:强行使我们的结果映射为一对多时,和多对一一样,即使不是多对一也会强行映射为多对一,并且底层是根据一的id来组织数据的(其实就是主表),所以一定要把id查出来。比如:查询部门和人关联查询时,一个部门有多个人,所以要查询部门的id。 无论是collection还是association都属于嵌套结果,在查询时都要查询出主表id,否则mybatis不能正常结果的数据结构。 联合查询和分步查询区别,性能区别不大,但有些特殊场景需要嵌套查询,比如部分分页查询 SELECT * FROM dept d LEFT JOIN emp e on d.id=e.dept_id LIMIT 3 我要前两个部门岗位,但是现在只显示了一个部门,所以这种情况下就不能再使用嵌套结果,而是需要嵌套查询。 当我们在进行表关联的时候,有可能在查询结果的时候不需要关联对象的属性值,那么此时可以通过延迟加载来实现功能。在全局配置文件中添加如下属性mybatis-config.xml 如果设置了全局加载,但是希望在某一个sql语句查询的时候不使用延时策略,可以添加fetchType下属性:



