ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实战项目-03(讲师的分页查询和条件查询,添加,修改)

2021-10-17 19:02:20  阅读:139  来源: 互联网

标签:03 分页 value 查询 pageTeacher 讲师 public


讲师的分页查询

MybatisPlusConfig中配置分页插件

在config中的EduConfig配置分页插件

/**
     * 配置分页的插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }

编写分页controller中的方法

 //分页查询(1. 增加插件 2. 创建page对象
    @ApiOperation(value = "分页查询讲师")
    @GetMapping("pageTeacher/{current}/{limit}")//current:当前页,limit:记录数
    public R pageListTeacher(@ApiParam(name = "current" , value = "当前页" , required = true) @PathVariable long current,
                             @ApiParam(name = "limit" , value = "记录数" , required = true) @PathVariable long limit){
        //创建page对象
        Page<EduTeacher> pageTeacher = new Page<>(current,limit);

        //调用方法实现分页(调用方法的时候,底层封装,把分页所有数据封装到pageTeacher对象里面)
        teacherService.page(pageTeacher,null);

        long total = pageTeacher.getTotal();//总记录数
        List<EduTeacher> records = pageTeacher.getRecords();//数据的list集合

        return R.ok().data("total",total).data("rows",records);
    }

多条件组合查询带分页

页面类似
image

1. 需要把条件值传递到接口里面(vo)

在实体类中添加vo包在vo包中添加TeacherQuery

package com.sli.eduservice.entity.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author 1_f_
 * @create 2021-10-16 16:40
 */
//次类用于数据的封装
@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;

}

对应上面图片中的名称,级别,开始和结束

2. 根据条件值进行判断,拼接条件(controller中增加方法)

  • RequestBody 需要使用post的提交方式,使用json传递数据,将json数据封装到对应的对象里面(往里面传),通俗点说就是接收前端传递给后端的json字符串中的数据的(请求体中的数据的)
  • ResponseBody 将java对象转为json的格式,通俗点说就是往前端传输需要的json数据
//条件查询带分页
    @ApiOperation(value = "条件分页查询讲师")
    @PostMapping("pageTeacherCondition/{current}/{limit}")
    public R pageTeacherCondition(@ApiParam(name = "current" , value = "当前页" , required = true) @PathVariable long current,
                                  @ApiParam(name = "limit" , value = "记录数" , required = true) @PathVariable long limit,
                                  @RequestBody(required = false) TeacherQuery teacherQuery){

        //创建一个page对象
        Page<EduTeacher> pageTeacher = new Page<>(current,limit);
        //构架wrapper条件
        QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
        //多条件组合查询(动态sql)
        //判断条件值是否为空,如果不为空,则拼接条件
        String name = teacherQuery.getName();
        Integer level = teacherQuery.getLevel();
        String begin = teacherQuery.getBegin();
        String end = teacherQuery.getEnd();
		//stringutils是import org.springframework.util.StringUtils;包中的
        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);
        }

        //调用方法,实现条件查询分页
        teacherService.page(pageTeacher,wrapper);

        long total = pageTeacher.getTotal();//总记录数
        List<EduTeacher> records = pageTeacher.getRecords();//数据的list集合
        return R.ok().data("total",total).data("rows",records);
    }

讲师添加功能

1. 需要自动填充创建时间以及修改时间

在service_base中创建包handler创建自动填充类MyMetaObjectHandler,重写其中的两个方法

package com.sli.servicebase.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;

/**
 * @author 1_f_
 * @create 2021-10-16 17:21
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        //此处传递的实体类是属性名称,不是表中的字段名称
        this.setFieldValByName("gmtCreate", new Date() , metaObject);
        this.setFieldValByName("gmtModified", new Date() , metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("gmtModified", new Date() , metaObject);
    }
}

2. 在实体类添加自动填充注解

image

3. controller中定义方法

//添加讲师的接口
    @ApiOperation(value = "添加讲师")
    @PostMapping("addTeacher")
    public R addTeacher(@RequestBody EduTeacher eduTeacher){
        boolean save = teacherService.save(eduTeacher);
        if (save){
            return R.ok();
        }else {
            return R.error();
        }
    }

    //修改讲师的接口,根据id查询,然后修改
    //1.根据id查询
    @ApiOperation(value = "根据id查询讲师")
    @GetMapping("getTeacher/{id}")
    public R getTeacher(@PathVariable String id){
        EduTeacher eduTeacher = teacherService.getById(id);
        return R.ok().data("teacher",eduTeacher);
    }

    //讲师修改功能
    @ApiOperation(value = "修改讲师")
    @PostMapping("updateTeacher")
    public R updateTeacher(@RequestBody EduTeacher eduTeacher){
        boolean flag = teacherService.updateById(eduTeacher);
        if (flag){
            return R.ok();
        }else {
            return R.error();
        }
    }

查询用get请求 添加用post请求 修改用put 删除用delete

标签:03,分页,value,查询,pageTeacher,讲师,public
来源: https://www.cnblogs.com/sli1f/p/15417717.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有