谷粒学苑第二天

谷粒学苑第二天

创建父工程

在这里插入图片描述
在这里插入图片描述

代码生成器:(直接去文件夹 复制粘贴)

在这里插入图片描述
在这里插入图片描述
最好写绝对路径:
在这里插入图片描述
在这里插入图片描述

需要加时区

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
其他的不需要改

在这里插入图片描述
在这里插入图片描述
老师的目录是这样的:
在这里插入图片描述
我的怎么这么奇怪:
在这里插入图片描述
被折叠了
好了:
在这里插入图片描述

这是啥

在这里插入图片描述
在这里插入图片描述

找到注解的具体实现逻辑(全局搜索注解名.class)

在这里插入图片描述

在这里插入图片描述

Controller 注service service注mapper

在这里插入图片描述

service已经自动调mapper了

在这里插入图片描述
注入mapper(自动)
在这里插入图片描述

小问题

直接打字是错的
在这里插入图片描述
快捷方法:.var 回车
在这里插入图片描述

也不是直接输入是错的 是刚刚导错包了
在这里插入图片描述

最基本的开发:

在这里插入图片描述
创建启动类:
在这里插入图片描述

创建配置类 配置mapper扫描及其他

在这里插入图片描述

最终测试 使用8001端口

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

mapper加上@Mapper注解 才会在spring容器里

在这里插入图片描述
在这里插入图片描述
http://localhost:8001/eduservice/teacher/findAll

json形式作返回

在这里插入图片描述

在这里插入图片描述

时区配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

讲师逻辑删除

在这里插入图片描述
逻辑删除注解:
在这里插入图片描述
编写controller方法:
在这里插入图片描述

swagger整合过程

Swagger测试

在这里插入图片描述
在这里插入图片描述
配置类:
在这里插入图片描述
在这里插入图片描述

service_edu要用service_base

在这里插入图片描述
在这里插入图片描述

要想这个配置类加载到

在这里插入图片描述

要在启动类上增加这个scan注解 还有包的名字 才会去扫描包里面的内容

在这里插入图片描述
在这里插入图片描述
报错:
在这里插入图片描述

配置文件加到这个子模块里面 Maven没刷新时报错 刷新后不报了

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
http://localhost:8001/swagger-ui.html
在这里插入图片描述

controller接口部分

在这里插入图片描述

需要传参数;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
让其有中文提示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.atguigu.commonutils;

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

import java.util.HashMap;
import java.util.Map;

@Data //lombok注解 会生成get set方法
public class R {
    @ApiModelProperty(value = "是否成功")
    private Boolean success;

    @ApiModelProperty(value = "返回码")
    private Integer code;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "返回数据")
    private Map<String, Object> data = new HashMap<String, Object>();

    //把构造方法私有
    private R() {}

    //成功静态方法
    public static R ok() {
        R r = new R(); //在自己的类里面 所以可以new
        r.setSuccess(true);
        r.setCode(ResultCode.SUCCESS);  // 20000 直接调ResultCode.SUCCESS
        r.setMessage("成功");
        return r;
    }

    //失败静态方法
    public static R error() {
        R r = new R(); //在自己的类里面 所以可以new
        r.setSuccess(false);
        r.setCode(ResultCode.ERROR);  // 20000 直接调ResultCode.SUCCESS
        r.setMessage("失败");
        return r;
    }

    public R success(Boolean success){
        this.setSuccess(success);
        return this;   //返回当前类的对象  return this;就能写成链式编程 R.ok().code().message()
    }
    public R message(String message){
        this.setMessage(message);
        return this;
    }
    public R code(Integer code){
        this.setCode(code);
        return this;
    }
    public R data(String key, Object value){
        this.data.put(key, value);
        return this;
    }
    public R data(Map<String, Object> map){
        this.setData(map);
        return this;
    }

}

以后写接口都统一返回类型R

先引入依赖 才能够用里面相关内容
在这里插入图片描述

引入自己建的 别引苞米豆

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

统一结果返回:

在这里插入图片描述

讲师分页功能

配置mp分页插件
在这里插入图片描述
在这里插入图片描述

package com.atguigu.eduservice.controller;


import com.atguigu.commonutils.R;
import com.atguigu.eduservice.entity.EduTeacher;
import com.atguigu.eduservice.service.EduTeacherService;
//import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.security.PermitAll;
//import java.util.HashMap;
//import java.util.HashMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//import java.util.Map;

//import java.awt.*;

/**
 * <p>
 * 讲师 前端控制器
 * </p>
 *
 * @author testjava
 * @since 2023-02-20
 */
@Api(description="讲师管理")
@RestController
@RequestMapping("/eduservice/teacher")  //最后访问的路径  http://localhost:8001/eduservice/teacher/findAll
class EduTeacherController {

    //把service注入
    @Autowired
    private EduTeacherService teacherService;

    //1 查询讲师表所有数据
    //rest风格
    @ApiOperation(value = "所有讲师列表")
    @GetMapping("findAll")      //方法的名字   写findAll和/findAll都一样
    //public List<EduTeacher> findAllTeacher() {
    public R findAllTeacher() {
        List<EduTeacher> list = teacherService.list(null);
        return R.ok().data("items",list);  //链式写法  值:list
    }


    //2 逻辑删除讲师
    @DeleteMapping("{id}") //id值需要通过路径传递 http://localhost:8001/eduservice/teacher/findAll/1 如果id值是1
//    public boolean removeById(@ApiParam(name = "id", value = "讲师ID", required = true)@PathVariable String id){  //path路径 得到路径中的id值
    public R removeById(@ApiParam(name = "id", value = "讲师ID", required = true)@PathVariable String id){  //path路径 得到路径中的id值
        boolean flag = teacherService.removeById(id);
        if(flag) {
            return R.ok();
        } else {
            return R.error();
        }
    }


    //分页查询讲师方法
    //current:当前页   limit:每页记录数
    @GetMapping("pageTeacher/{current}/{limit}")    //通过路径传值
    public R pageListTeacher(@PathVariable long current,    //通过这种方式得到两个值
                             @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集合

        //方法1
        return R.ok().data("total",total).data("rows",records);

       /* //方法2
        Map map = new HashMap();  // 爆红了 不知道为啥
        map.put("total",total);
        map.put("rows",records);
        return R.ok().data(map);*/

    }
}


在这里插入图片描述在这里插入图片描述

条件查询分类

在这里插入图片描述

用其来进行数据的封装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

遇到小问题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

继续

在这里插入图片描述

 //4 条件查询带分页的方法
    @GetMapping("pageTeacherCondition/{current}/{limit}")
    public R pageTeacherCondition(@PathVariable long current, @PathVariable long limit,
                             TeacherQuery teacherQuery) {       //用对象形式得到条件TeacherQuery teacherQuery

        //创建page对象
        Page<EduTeacher> pageTeacher = new Page<>(current, limit);
        //构建条件
        QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
        //多条件组合查询 类似mybatis的动态mysql
        String name = teacherQuery.getName();
        Integer level = teacherQuery.getLevel();
        String begin = teacherQuery.getBegin();
        String end = teacherQuery.getEnd();
        //判断条件值是否为空,如果不空 拼接条件  工具类StringUtils
        if(!org.springframework.util.StringUtils.isEmpty(name)) {
            //构建条件
            wrapper.like("name",name);
        }
        if(!org.springframework.util.StringUtils.isEmpty(level)) {
            wrapper.like("level",level);
        }
        if(!org.springframework.util.StringUtils.isEmpty(begin)) {  //表中字段gmt_create名称 不是属性名称
            wrapper.ge("gmt_create",begin);  //ge 大于等于
        }
        if(!org.springframework.util.StringUtils.isEmpty(name)) {
            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);

在这里插入图片描述

加注解

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

没查出来 解决

在这里插入图片描述
查出来了:
在这里插入图片描述
在这里插入图片描述

自动填充

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查询 修改

在这里插入图片描述
在这里插入图片描述

统一异常处理

手动异常:
在这里插入图片描述

但还是能正常查询???

在这里插入图片描述
这里刚刚写错地方了
在这里插入图片描述

这个要注释掉 service_base里面已经有common_utils 不能重复 依赖传递

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值