分页和条件查询及显示

tech2022-09-16  64

1、写一个配置类,配置分页插件

@Configuration @MapperScan("com.atguigu.eduservice.mapper") //路径为mapper文件所在的包 public class EduConfig { /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }

2、编写分页方法

一:不带条件

@Autowired private EduTeacherService eduTeacherService; //分页查询讲师的方法 @GetMapping("/pageTeacher/{current}/{limit}") public R pageListTeacher(@PathVariable long current, @PathVariable long limit) { Page<EduTeacher> pageTeacher = new Page<>(current, limit); //调用方法实现分页 eduTeacherService.page(pageTeacher, null); long total = pageTeacher.getTotal();//总记录数 List<EduTeacher> records = pageTeacher.getRecords(); return R.ok().data("total", total).data("row", records); }

带条件:(建议建一个条件的实体类)

@ApiModel(value = "Teacher查询对象", description = "讲师查询对象封装") @Data public class TeacherQuery { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "教师名称,模糊查询") private String name; @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师") private Integer level; @ApiModelProperty(value = "查询开始时间", example = "2019-01-01 10:10:10") private String begin;//注意,这里使用的是String类型,前端传过来的数据无需进行类型转换 @ApiModelProperty(value = "查询结束时间", example = "2019-12-01 10:10:10") private String end; } //条件查询带分页方法 @PostMapping("/pageTeacherCondition/{current}/{limit}") public R pageTeacherCondition(@PathVariable long current, @PathVariable long limit, @RequestBody(required = false) TeacherQuery teacherQuery) { //创建page对象 Page<EduTeacher> pageTeacher = new Page<>(current, limit); //构建条件 QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>(); // 多条件组合查询 // mybatis学过 动态sql String name = teacherQuery.getName(); Integer level = teacherQuery.getLevel(); String begin = teacherQuery.getBegin(); String end = teacherQuery.getEnd(); //判断条件值是否为空,如果不为空拼接条件 if (!StringUtils.isEmpty(name)) { //构建条件 wrapper.like("name", name); } if (!StringUtils.isEmpty(level)) { wrapper.eq("level", level); } if (!StringUtils.isEmpty(begin)) { wrapper.ge("gmt_create", begin); } if (!StringUtils.isEmpty(end)) { wrapper.le("gmt_create", end); } //排序 wrapper.orderByDesc("gmt_create"); //调用方法实现条件查询分页 eduTeacherService.page(pageTeacher, wrapper); long total = pageTeacher.getTotal();//总记录数 List<EduTeacher> records = pageTeacher.getRecords(); //数据list集合 return R.ok().data("total", total).data("rows", records); }

前端显示:

我使用的是饿了么的element-ui组件,详细使用到官网https://element.eleme.cn/#/zh-CN/component/installation

<template> <div class="app-container"> 讲师表单 <!--查询表单--> <el-form :inline="true" class="demo-form-inline"> <el-form-item> <el-input v-model="teacherQuery.name" placeholder="讲师名"/> </el-form-item> <el-form-item> <el-select v-model="teacherQuery.level" clearable placeholder="讲师头衔"> <el-option :value="1" label="高级讲师"/> <el-option :value="2" label="首席讲师"/> </el-select> </el-form-item> <el-form-item label="添加时间"> <el-date-picker v-model="teacherQuery.begin" type="datetime" placeholder="选择开始时间" value-format="yyyy-MM-dd HH:mm:ss" default-time="00:00:00" /> </el-form-item> <el-form-item> <el-date-picker v-model="teacherQuery.end" type="datetime" placeholder="选择截止时间" value-format="yyyy-MM-dd HH:mm:ss" default-time="00:00:00" /> </el-form-item> <el-button type="primary" icon="el-icon-search" @click="getList()">查询</el-button> <el-button type="default" @click="resetData()">清空</el-button> </el-form> <!-- 表格 --> <el-table :data="list" element-loading-text="数据加载中" border fit highlight-current-row> <el-table-column label="序号" width="70" align="center"> <template slot-scope="scope"> {{ (page - 1) * limit + scope.$index + 1 }} </template> </el-table-column> <el-table-column prop="name" label="名称" width="80" /> <el-table-column label="头衔" width="80"> <template slot-scope="scope"> {{ scope.row.level===1?'高级讲师':'首席讲师' }} </template> </el-table-column> <el-table-column prop="intro" label="资历" /> <el-table-column prop="gmtCreate" label="添加时间" width="160"/> <el-table-column prop="sort" label="排序" width="60" /> <el-table-column label="操作" width="200" align="center"> <template slot-scope="scope"> <router-link :to="'/teacher/edit/'+scope.row.id"> <el-button type="primary" size="mini" icon="el-icon-edit">修改</el-button> </router-link> <el-button type="danger" size="mini" icon="el-icon-delete" @click="removeDataById(scope.row.id)">删除</el-button> </template> </el-table-column> </el-table> <!-- 分页 --> <el-pagination :current-page="page" :page-size="limit" :total="total" style="padding: 30px 0; text-align: center;" layout="total, prev, pager, next, jumper" @current-change="getList" /> </div> </template> <script> //引入调用teacher.js文件 import teacher from '@/api/edu/teacher' export default { //写核心代码位置 // data:{ // }, data() {//定义变量和初始值 return { list:null,//查询之后接口返回集合 page:1,//当前页 limit:3,//每页记录数 total:0,//总记录数 teacherQuery:{} //条件封装对象 } }, created() { this.getList() }, methods: { getList(page = 1){ this.page = page teacher.getTeacherListPage(this.page,this.limit,this.teacherQuery) .then(response =>{ //console.log(response) this.list = response.data.rows this.total = response.data.total // console.log(this.list) // console.log(this.total) }) .catch(error =>{ console.log(error) }) }, resetData(){ //清空条件 this.teacherQuery={} //查询所有 this.getList() }, //删除讲师方法 removeDataById(id){ this.$confirm('此操作将永久删除讲师记录, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { //点击确定,执行then方法 //调用删除的方法 teacher.deleteTeacherId(id) .then(response =>{//删除成功 //提示信息 this.$message({ type: 'success', message: '删除成功!' }); //回到列表页面 this.getList() }) }) } }, } </script>

 

最新回复(0)