java mysql vo mybatis 分页_Mybatis Plus 使用VO分页查询
Mybatis Plus 使用VO分頁查詢
現在想要分頁查詢數據庫, 將查詢出來的數據封裝到vo, 如果在使用limit, 將無法通過一次查詢獲取總數據條數, 但是mp封裝了
#VO
這里組合了course, subject, teacher作為DO的實體類, 也是sql返回的resultType
package com.chz.eduservice.entity.vo;
import com.chz.utils.statuscode.CourseStatus;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* @Author: CHZ
* @DateTime: 2020/7/3 16:24
* @Description: TODO
*/
@ApiModel("課程發布信息封裝類,用于展示course和在course list中顯示")
@Data
public class CoursePublishInfoVo implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String title;
private String cover;
private Integer lessonNum;
private String subjectLevelOne;
private String subjectLevelTwo;
private String teacherName;
private String price;
private String viewCount;
private CourseStatus status;
}
#DAO
注意這里必須要有Page做參數, 泛型為想要作為分頁查詢一條記錄的VO
/**
* 按條件分頁查詢course
*
* @param page 注意這里必須要有Page對象,否則mp無法完成分頁查詢
* @param courseQuery
* @return
*/
List pageCourseAllInfo(Page page,
@Param("courseQuery") CourseQuery courseQuery);
#sql
這里一定不能使用limit
SELECT ec.id, ec.title, ec.price, ec.status, ec.lesson_num AS lessonNum,ec.view_count AS viewCount,
et.name AS teacherName,
es1.title AS subjectLevelOne,
es2.title AS subjectLevelTwo
FROM edu_course ec
LEFT JOIN edu_course_description ecd ON ec.id = ecd.id
LEFT JOIN edu_teacher et ON ec.teacher_id = et.id
LEFT JOIN edu_subject es1 ON ec.subject_parent_id = es1.id
LEFT JOIN edu_subject es2 ON ec.subject_id = es2.id
AND ec.title = #{courseQuery.title}
AND et.id = #{courseQuery.teacherId}
AND ec.subject_parent_id = #{courseQuery.subjectParentId}
AND ec.subject_id = #{courseQuery.subjectId}
AND ec.status = #{courseQuery.status}
AND ec.price BETWEEN courseQuery.beginPrice AND courseQuery.endPrice
ORDER BY ec.gmt_create DESC
#Service
@Override
public Page pageCourseAllInfo(Integer cur, Integer size, CourseQuery courseQuery) {
Page page = new Page<>(cur, size);
//將查詢結果封裝到page中,作為page中的數據
page.setRecords(baseMapper.pageCourseAllInfo(page, courseQuery));
return page;
}
#Controller
@ApiOperation(value = "分頁查詢")
@PostMapping("/{curPage}/{pageSize}")
public ResponseBo pageCourseOnCondition(@Min(1) @PathVariable Integer curPage,
@PathVariable Integer pageSize,
@RequestBody CourseQuery courseQuery) {
HashMap map = new HashMap<>();
Page page = courseService.pageCourseAllInfo(curPage, pageSize, courseQuery);
map.put("courses",page.getRecords());
map.put("total",page.getTotal());
return ResponseBo.ok().data("info", map);
}
總結
以上是生活随笔為你收集整理的java mysql vo mybatis 分页_Mybatis Plus 使用VO分页查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建电脑快速休眠的快捷键
- 下一篇: linux cmake编译源码,linu