4.实现讲师列表接口
4.1 pojo
- 在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
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
- 接口
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
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 拷贝配置类
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
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文件中
@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
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文件
- 配置指定删除和不删除的状态
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
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