欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

java mysql vo mybatis 分页_Mybatis Plus 使用VO分页查询

发布时间:2023/12/20 数据库 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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分页查询的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。