关于多表关联查询的两种方式
- 多表关联查询的实现有联表和嵌套查询两种,它们的差异在Mybatis中体现在resultMap的定义上:
-
联表时,resultMap内使用collection子节点,将联表查询的结果映射到关联对象集合;
-
嵌套时,resultMap内使用association子节点,association的select属性触发一次新的查询;
- 上述两种方式都能成功得到查询结果,接下来逐一尝试;
联表查询
-
本篇继续使用上一篇中创建的子工程relatedoperation;
-
实体类UserWithLogs.java如下,可见成员变量logs是用来保存该用户所有日志的集合:
package com.bolingcavalry.relatedoperation.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@ApiModel(description = “用户实体类(含行为日志集合)”)
public class UserWithLogs {
@ApiModelProperty(value = “用户ID”)
private Integer id;
@ApiModelProperty(value = “用户名”, required = true)
private String name;
@ApiModelProperty(value = “用户地址”, required = false)
private Integer age;
@ApiModelProperty(value = “行为日志”, required = false)
private List logs;
}