添加场景
开发中,前端传参经常会有一对多的情况,比如要添加一个课程,这个课程里面包含多个目录,每个目录里面包含多个课件,这时候前端传的json对象中就会包含数组对象,那后端该如何去接收呢?做法很简单,下面进行代码演示
前端传参json数据:
{
"courseId": "1",
"courseName": "鸡",
"catalogList": [
{
"catalogId": "1",
"catalogName": "泥",
"coursewareList": [
{
"coursewareId": "1",
"coursewareName": "态"
},
{
"coursewareId": "2",
"coursewareName": "美"
}
]
}
]
}
后端代码:
@RestController
@RequestMapping("/course")
public class CourseController {
@PostMapping("/insert")
public Result<CourseDTO> validParam(@RequestBody CourseDTO dto) {
return Result.ok(dto);
}
}
@Data
public class CourseDTO {
private String courseId;
private String courseName;
private List<CatalogDTO> catalogList;
}
@Data
public class CatalogDTO {
private String catalogId;
private String catalogName;
private List<CoursewareDTO> coursewareList;
}
@Data
public class CoursewareDTO {
private String coursewareId;
private String coursewareName;
}
请求后数据就会自动封装到CourseDTO 对象进去,对应的子集也会封装到list集合中去
查询场景
同样的,查询时根据课程id查询课程及对应的目录和课件信息,然后以相同的数据格式返回给前端,这里为了方便都是用DTO对象去传输,对应的mapper编写
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.dao.CourseDAO">
<resultMap id="CourseMap" type="com.example.demo.dto.CourseDTO">
<result property="courseId" column="course_id"/>
<result property="courseName" column="course_name"/>
<collection property="catalogList" ofType="com.example.demo.dto.CatalogDTO"
select="getCatalogList" column="course_id"></collection>
</resultMap>
<resultMap id="CatalogMap" type="com.example.demo.dto.CatalogDTO">
<result property="catalogId" column="catalog_id"/>
<result property="catalogName" column="catalog_name"/>
<collection property="coursewareList" ofType="com.example.demo.dto.CoursewareDTO"
select="getCoursewareList" column="catalog_id"></collection>
</resultMap>
<resultMap id="CoursewareMap" type="com.example.demo.dto.CoursewareDTO">
<result property="coursewareId" column="courseware_id"/>
<result property="coursewareName" column="courseware_name"/>
</resultMap>
<!-- 查询课程 -->
<select id="getCourse" resultMap="CourseMap">
SELECT
course_id,
course_name
FROM
course
WHERE
course_id = #{courseId}
</select>
<!-- 查询目录 -->
<select id="getCatalogList" resultMap="CatalogMap">
SELECt
catalog_id,
catalog_name
FROM
catalog
WHERE
course_id = #{courseId}
</select>
<!-- 查询课件 -->
<select id="getCoursewareList" resultMap="CoursewareMap">
SELECt
courseware_id,
courseware_name
FROM
courseware
WHERE
catalog_id = #{catalogId}
</select>
</mapper>
查询结果:
{
"code": 0,
"message": "操作成功",
"data": {
"courseId": "1",
"courseName": "鸡",
"catalogList": [
{
"catalogId": "1",
"catalogName": "泥",
"coursewareList": [
{
"coursewareId": "1",
"coursewareName": "唱"
},
{
"coursewareId": "2",
"coursewareName": "跳"
}
]
}
]
}
}