⛪ 专栏地址 系列教程更新中
🚀 专栏介绍: 本专栏为SpringBoot+Spring+Mybatis的系列零基础教程,从框架的基础知识讲起,从0开始实现一个在线教育实战项目
🚀 源码获取: 项目中的资料可以通过文章底部公众号联系我获取,或者+V 【yopa66】备注SSM
1.快速创建一个SpringBoot项目
2.整体框架目录
-
GET请求
- 场景:一般的查询接口就是get请求
- 注解:@GetMapping = @RequestMapping(method = RequestMethod.GET)
-
一个顶两的注解
@GetMapping = @RequestMapping(method = RequestMethod.GET) @PostMapping = @RequestMapping(method = RequestMethod.POST) @PutMapping = @RequestMapping(method = RequestMethod.PUT) @DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)
SpringBoot中的常用注解详解
-
@Controller:声明该类是一个控制器类,用来处理HTTP请求。
-
@RequestMapping:用来映射请求的URL和HTTP请求方法,可以用在类级别和方法级别。
-
@GetMapping:用来映射HTTP GET请求。
-
@PostMapping:用来映射HTTP POST请求。
-
@PutMapping:用来映射HTTP PUT请求。
-
@DeleteMapping:用来映射HTTP DELETE请求。
-
@PathVariable:用来获取URL中的参数值。
-
@RequestParam:用来获取请求参数的值。
-
@RequestBody:用来获取请求体中的数据。
-
@RestController是一个组合注解,它相当于@Controller和@ResponseBody的结合体。
@Controller用来声明该类是一个控制器类,用来处理HTTP请求。
@ResponseBody用来将方法的返回值转换成指定的格式,并写入到HTTP响应中。
@RestController相当于将@Controller和@ResponseBody组合起来使用,它的作用是声明该类是一个控制器类,并且方法的返回值会自动转换成JSON格式,并写入到HTTP响应中。在使用@RestController时,不需要再在每个方法上加@ResponseBody注解了。
全局数据JSON格式封装
@Data
@AllArgsConstructor
@NoArgsConstructor
public class JsonData {
/**
* 状态码 0 表示成功,1表示处理中,-1表示失败
*/
private Integer code;
/**
* 数据
*/
private Object data;
/**
* 描述
*/
private String msg;
/**
* 成功,传入数据
* @return
*/
public static JsonData buildSuccess() {
return new JsonData(0, null, null);
}
/**
* 成功,传入数据
* @param data
* @return
*/
public static JsonData buildSuccess(Object data) {
return new JsonData(0, data, null);
}
/**
* 失败,传入描述信息
* @param msg
* @return
*/
public static JsonData buildError(String msg) {
return new JsonData(-1, null, msg);
}
开发视频列表查询接口
- 最终效果 这里使用PostMan进行测试
启动类:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
//这个类要放在最外层才可以扫描子包的东西
SpringApplication.run(DemoApplication.class, args);
}
}
控制层: 主要
@RestController
@RequestMapping("/api/v1/video")
public class VideoController {
@Autowired
private VideoService videoService;
@GetMapping("list")
public Object list(String name) throws JsonProcessingException {
//xx/?name=xxx 传递参数
System.out.println(name);
return JsonData.bulidSuccess(videoService.listVideo());
}
mapper实现返回列表的方法,这里采用模拟,后面通过mybatis进行数据库交互 :
@Repository //加这个注解,spring就会自动识别是一个组件,自动会帮我们new一个类,之后我们去VideoSetvice接口定义方法
public class VideoMapper {
private static Map<Integer, Video> videoMap=new HashMap<>();
static {
//模拟的数据,后续采用数据库
静态加载类,加载一次,已启动就用信息的了。
videoMap.put(1,new Video(1,"java基础课程,jdk新特性"));
videoMap.put(2,new Video(2,"spring boot"));
videoMap.put(3,new Video(3,"java基础课程,spring clound"));
videoMap.put(4,new Video(4,"java基础课程,面试专题"));
}
public List<Video> listVideo(){
List<Video> list=new ArrayList<>();
list.addAll(videoMap.values());
return list;
}
}
接口层:
public interface VideoService {
//返回List列表
List<Video> listVideo();
}
实现层:
@Service //可以统一使用Component但是为了区分可以使用提供的多种注解
public class VideoServiceImpl implements VideoService {
// private VideoMapper videoMapper=new VideoMapper(); 使用spring就不用这么写,只需要加一个注解spring就会自动帮我们实例化
@Autowired
private VideoMapper videoMapper;
@Override
public List<Video> listVideo() {
return videoMapper.listVideo();
}
}
@Autowired
private VideoService videoService;
@GetMapping("list")
public Object list(){
return videoService.listVideo();
}
- @Autowired 使用了这个注解 那全局都要用这个 不要单独去new写法