基于SpringCloudalibaba+SSM+Mybatisplus实现在线教育讲师管理后端(二)

简介: 基于SpringCloudalibaba+SSM+Mybatisplus实现在线教育讲师管理后端(二)

4.实现讲师列表接口

4.1 pojo

image.png

  • 在zx-domain中创建实体类EduTeacher
package com.czxy.zx.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 *
 */
@Data//lombok注解
@ApiModel(value = "EduTeacher对象",description = "讲师")//swagger注解
public class EduTeacher {
    @TableId(value = "id",type = IdType.AUTO)//mybatis-plus的注解
    @ApiModelProperty(value = "讲师ID")//swagger注解
    private String id;
    @ApiModelProperty(value = "讲师姓名")
    private String name;
    @ApiModelProperty(value = "讲师资历,一句话说明讲师")
    private String intro;
    @ApiModelProperty(value = "讲师简介")
    private String career;
    @ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
    private Integer level;
    @ApiModelProperty(value = "讲师头像")
    private String avatar;
    @ApiModelProperty(value = "讲师排序")
    private Integer sort;
    @ApiModelProperty(value = "逻辑删除 1已删除, 0未删除")
    @TableField(value = "is_deleted",fill = FieldFill.INSERT)
    @TableLogic//逻辑删除
    private Integer isDeleted;
    @ApiModelProperty(value = "创建时间")
    @TableField(value = "gmt_create",fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date gmtCreate;
    @ApiModelProperty(value = "更新时间")
    @TableField(value = "gmt_modified",fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date gmtModified;
}

4.2 mapper

image.png

package com.czxy.zx.teacher.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.czxy.zx.domain.EduTeacher;
import org.apache.ibatis.annotations.Mapper;
/**
 *
 */
@Mapper
public interface EduTeacherMapper extends BaseMapper<EduTeacher> {
}

4.3 service

image.png

  • 接口
package com.czxy.zx.teacher.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.czxy.zx.domain.EduTeacher;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
public interface EduTeacherService extends IService<EduTeacher> {
}
  • 实现类
package com.czxy.zx.teacher.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.czxy.zx.domain.EduTeacher;
import com.czxy.zx.teacher.mapper.EduTeacherMapper;
import com.czxy.zx.teacher.service.EduTeacherService;
import org.springframework.stereotype.Service;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Service
public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService {
}

4.4 Controller

image.png

TeacherController

package com.czxy.zx.teacher.controller;
import com.czxy.zx.domain.EduTeacher;
import com.czxy.zx.teacher.service.EduTeacherService;
import com.czxy.zx.vo.BaseResult;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@RestController
@RequestMapping("/teacher")
public class EduTeacherController {
    @Resource
    private EduTeacherService eduTeacherService;
    @GetMapping
    private BaseResult<List<EduTeacher>> getTeacherList(){
        List<EduTeacher> list = eduTeacherService.list(null);
        return BaseResult.ok("查询成功", list);
    }
}

4.5 拷贝配置类

image.png

4.6 处理Swagger接口

  • 修改controller
package com.czxy.zx.teacher.controller;
import com.czxy.zx.domain.EduTeacher;
import com.czxy.zx.teacher.service.EduTeacherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@RestController
@RequestMapping("/teacher")
@Api(tags = "老师接口", description = "老师接口描述,完成增删改查操作")
public class EduTeacherController {
    @Resource
    private EduTeacherService eduTeacherService;
    @ApiOperation(value = "查询所有老师")
    @GetMapping
    private BaseResult<List<EduTeacher>> getTeacherList(){
        List<EduTeacher> list = eduTeacherService.list(null);
        return BaseResult.ok("查询成功", list);
    }
}

4.7 测试

http://localhost:9000/swagger-ui.html

image.png

5.讲师逻辑删除

5.1 在Controller中添加删除方法

 @ApiOperation(value = "根据ID删除讲师")
    @ApiImplicitParams(value = {
//            @ApiImplicitParam(name = "id", value = "讲师ID", required = true,paramType = "path")//方式一
    })
    @DeleteMapping("/{id}")
    public boolean removeById(
            @ApiParam(name = "id", value = "讲师ID", required = true)//方式二
            @PathVariable("id") String id){
        return eduTeacherService.removeById(id);
    }

5.2 在EduTeacher.java文件中

image.png

@ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
@TableLogic
@TableField(fill = FieldFill.INSERT, value = "is_deleted")
private Boolean isDeleted;

5.3 完善:配置Handler

  • 创建 com.czxy.zx.teacher.handler.TeacherMetaObjectHandler.java

image.png

package com.czxy.zx.teacher.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Component
public class TeacherMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        // 添加时,填充的内容
        // this.setFieldValByName("字段名", 字段值 , metaObject);
        this.setFieldValByName("isDeleted",0 , metaObject);
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        // 修改时,填充的内容
    }
}

5.4 完善:配置application.yaml文件

  • 配置指定删除和不删除的状态

image.png

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0

5.5 讲师逻辑删除测试

ok

6.分页和条件查询

6.1 基本查询

6.1.1 创建 vo

image.png

package com.czxy.zx.teacher.vo;
import lombok.Data;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Data
public class TeacherVo {
}

6.1.2 controller

@ApiOperation(value = "所有老师:条件 + 分页")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "size",value = "每页个数",required = true,paramType = "path", dataType = "int"),
            @ApiImplicitParam(name = "current",value = "当前页",required = true,paramType = "path", dataType = "int")
    })
    @PostMapping("/condition/{size}/{current}")
    public BaseResult<Page<EduTeacher>> condition(
            @PathVariable("size") Integer size,
            @PathVariable("current") Integer current,
            @RequestBody TeacherVo teacherVo
            ){
        Page<EduTeacher> page = eduTeacherService.condition(size,current,teacherVo);
        return BaseResult.ok("查询成功", page);
    }

6.1.3 service

  • 接口
package com.czxy.zx.teacher.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.czxy.zx.domain.EduTeacher;
import com.czxy.zx.teacher.vo.TeacherVo;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
public interface EduTeacherService extends IService<EduTeacher> {
    /**
     * 条件分页查询
     * @param size
     * @param current
     * @param teacherVo
     * @return
     */
    Page<EduTeacher> condition(Integer size, Integer current, TeacherVo teacherVo);
}
  • 实现类
package com.czxy.zx.teacher.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.czxy.zx.domain.EduTeacher;
import com.czxy.zx.teacher.mapper.EduTeacherMapper;
import com.czxy.zx.teacher.service.EduTeacherService;
import com.czxy.zx.teacher.vo.TeacherVo;
import org.springframework.stereotype.Service;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Service
public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService {
    @Override
    public Page<EduTeacher> condition(Integer size, Integer current, TeacherVo teacherVo) {
        return null;
    }
}

6.2 分页

  • 修改service,完成分页查询
package com.czxy.zx.teacher.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.czxy.zx.domain.EduTeacher;
import com.czxy.zx.teacher.mapper.EduTeacherMapper;
import com.czxy.zx.teacher.service.EduTeacherService;
import com.czxy.zx.teacher.vo.TeacherVo;
import org.springframework.stereotype.Service;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Service
public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService {
    @Override
    public Page<EduTeacher> condition(Integer size, Integer current, TeacherVo teacherVo) {
        //1 条件查询
        QueryWrapper<EduTeacher> queryWrapper = new QueryWrapper<>();
        //2 分页条件
        Page<EduTeacher> page = new Page<>(current,size);
        //3 查询
        this.baseMapper.selectPage(page, queryWrapper);
        //4 关联查询
        //5 返回
        return page;
    }
}

6.3 条件查询

  • 需求:
  • 根据讲师姓名模糊查询
  • 根据讲师头衔精准查询
  • 根据时间范围查询(开始时间、结束时间)
  • 完善vo
package com.czxy.zx.teacher.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Data
@ApiModel(value = "封装了Teacher条件查询的参数")
public class TeacherVo {
    @ApiModelProperty(value = "讲师姓名,模糊查询")
    private String name;
    @ApiModelProperty(value = "讲师头衔:1 高级讲师  2 首席讲师")
    private String level;
    @ApiModelProperty(value = "查询开始时间",example = "2020-02-01 10:12:30")
    private String beginDate;
    @ApiModelProperty(value = "查询截止时间",example = "2020-02-01 10:12:30")
    private String endDate;
}
  • 完善service
package com.czxy.zx.teacher.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.czxy.zx.domain.EduTeacher;
import com.czxy.zx.teacher.mapper.EduTeacherMapper;
import com.czxy.zx.teacher.service.EduTeacherService;
import com.czxy.zx.teacher.vo.TeacherVo;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
/**
 * @author 桐叔
 * @email liangtong@itcast.cn
 */
@Service
public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService {
    @Override
    public Page<EduTeacher> condition(Integer size, Integer current, TeacherVo teacherVo) {
        //1 条件查询
        QueryWrapper<EduTeacher> queryWrapper = new QueryWrapper<>();
        queryWrapper.like(StringUtils.isNotBlank(teacherVo.getName()), "name", teacherVo.getName());
        queryWrapper.eq(StringUtils.isNotBlank(teacherVo.getLevel()), "level", teacherVo.getLevel());
        queryWrapper.ge(StringUtils.isNotBlank(teacherVo.getBeginDate()), "gmt_create", teacherVo.getBeginDate());
        queryWrapper.le(StringUtils.isNotBlank(teacherVo.getEndDate()), "gmt_create", teacherVo.getEndDate());
        //2 分页条件
        Page<EduTeacher> page = new Page<>(current,size);
        //3 查询
        this.baseMapper.selectPage(page, queryWrapper);
        //4 关联查询
        //5 返回
        return page;
    }
}

6.4 测试

ok

相关文章
|
16天前
|
前端开发 JavaScript Java
智慧物流管理|基于SSM的第三方物流信息管理系统
智慧物流管理|基于SSM的第三方物流信息管理系统
|
22天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的教材库存管理附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的教材库存管理附带文章和源代码部署视频讲解等
31 6
|
22天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的洛川县苹果销售管理平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的洛川县苹果销售管理平台附带文章和源代码部署视频讲解等
23 5
|
1天前
|
缓存 Java 数据库连接
我们后端程序员不是操作MyBatis的CRUD Boy
大家好,我是南哥。一个对Java程序员进阶成长颇有研究的人,今天我们接着新的一篇Java进阶指南。为啥都戏称后端是CRUD Boy?难道就因为天天怼着数据库CRUD吗?要我说,是这个岗位的位置要的就是你CRUD,你不得不CRUD。哪有公司天天能给你搭建高并发、高可用、大数据框架的活呢,一条业务线总要成长吧,慢慢成熟了就要装修工来缝缝补补、美化美化,也就是CRUD的活。不能妄自菲薄CRUD Boy,我们是后端工程师。今天来指南下操作数据库之MyBatis框架。
10 2
我们后端程序员不是操作MyBatis的CRUD Boy
|
1天前
|
Java 数据库连接 数据库
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
|
6天前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
24 3
|
6天前
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
13 3
|
6天前
|
安全 前端开发 Java
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构
12 1
|
25天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的车辆运输管理附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的车辆运输管理附带文章和源代码部署视频讲解等
20 7
|
25天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的高校实验室信息化综合管理平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的高校实验室信息化综合管理平台附带文章和源代码部署视频讲解等
142 6