三层数据结构如下
{
"code": 1,
"data": {
"projectID": 1,
"projectStageList": [
{
"stageID": 1,
"projectID": 1,
"stageName": "第一阶段",
"taskList": [
{
"mangerID": 31,
"taskName": "学习客服基本职责",
"taskID": 1066224890860171264,
"stageID": 1
},
{
"mangerID": 19,
"taskName": "直通车优化内容",
"taskID": 1066229261945696256,
"stageID": 1
}
]
},
{
"stageID": 2,
"projectID": 1,
"stageName": "第二阶段",
"taskList": []
},
{
"stageID": 5,
"projectID": 1,
"stageName": "看待歌手陈羽凡吸毒被抓一事",
"taskList": []
}
]
},
"success": true,
"info": "default info"
}
简而言之,一个项目有多个阶段,一个阶段有多个任务
One
package cn.com.suntree.cmp.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.util.List;
@Data
@TableName("t_cmp_project")
public class CmpProject {
@TableId(value = "projectID",type = IdType.AUTO)
@TableField("projectID")
private Long projectID;
@TableField("projectName")
private String projectName;
private List<CmpProjectStage> projectStageList;//阶段
}
many
package cn.com.suntree.cmp.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Data
@TableName("t_cmp_project_stage")
public class CmpProjectStage implements Serializable {
@TableId(value = "stageID",type = IdType.AUTO)
@TableField("stageID")
private Long stageID;//阶段编号
@TableField("projectID")
private Long projectID;//项目编号
List<Map<Object,Object>> taskList;//关联任务
}
one 方mapper
@Select("select * from "+tableName+" where projectID = #{projectID}")
@Results({
@Result(property = "projectStageList", column = "projectID",id = true,many = @Many(select = "cn.com.suntree.cmp.mapper.CmpProjectStageMapper.getStageListByProjectID"))
})
CmpProject getProjectByProgectID(Long projectID);
many方mapper
@Select("select * from "+tableName+" where projectID = #{projectID}")
@Results({
@Result(property = "stageID",column = "stageID"),
@Result(property = "taskList",id = true,column = "stageID", many = @Many(select = "cn.com.suntree.cmp.mapper.MissionTaskMapper.getTaskListByStageID"))
})
List<CmpProjectStage> getStageListByProjectID(Long projectID);
最里层mapper
@Select("Select t.stageID AS stageID,t.taskID,t.taskName,t.mangerID,t.mangerName from "+tableName +" t where stageID = #{stageID}")
List<Map<Object,Object>> getTaskListByStageID(Long stageID);
有个需要注意的地方 ,就是many方mapper的@Result(property = "stageID",column = "stageID")
如果不加,第二层的关联id会是null