建立教师控制器
有了数据表,我们就可以开始建立教师控制器了。
新建控制器
在 Controller
文件夹下,右键,新建一个TeacherController
类。
自动载入 TeacherRepository
...
@RestController
@RequestMapping("/Teacher")
public class TeacherController {
// Autowired注解:自动加载Spring为我们自动实例化的TeacherRepository接口对象
@Autowired
private TeacherRepository teacherRepository;
...
添加 getAll
方法,并设置路由
...
// GetMapping注解:设置路由,表示该方法只接受 get 请求
@GetMapping("/")
public List<Teacher> getAll() {
}
...
直接通过 teacherRepository
中的 findAll
方法获取所有的教师信息。
...
// GetMapping注解:设置路由,表示该方法只接受 get 请求
@GetMapping("/")
public List<Teacher> getAll() {
// (List<Teacher>):数据类型转换
List<Teacher> teachers = (List<Teacher>) teacherRepository.findAll();
return teachers;
}
...
由于我们的教师对象有多个,所以我们返回类型为 List<>
的对象数组。
最终代码如下:
package com.mengyunzhi.controller;
import com.mengyunzhi.repository.Teacher;
import com.mengyunzhi.repository.TeacherRepository;
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 java.util.List;
/**
* 教师控制器
* 2017-10-31
* design by Poshichao
*/
// RestController注解:声明一个REST风格的控制器(支持前后台分离)
// RequestMapping注解:设置路由,将“/Teacher”映射到TeacherController(教师控制器)上
@RestController
@RequestMapping("/Teacher")
public class TeacherController {
// Autowired注解:自动加载Spring为我们自动实例化的TeacherRepository接口对象
@Autowired
private TeacherRepository teacherRepository;
// GetMapping注解:设置路由,表示该方法只接受 get 请求
@GetMapping("/")
public List<Teacher> getAll() {
List<Teacher> teachers = (List<Teacher>) teacherRepository.findAll();
return teachers;
}
}
测试
重新启动项目。
去看我们的控制台。
好,成功启动项目。
然后打开IDEA为我们提供的测试工具 Test RESTful Web Service
。
将路径 Path
改为 Teacher/
,点击左侧的绿色三角,运行一下。然后就看到我们数据库中教师的信息全部获取出来了。
作为一个编程人员,看到对象信息是这种样子的,肯定很不舒服。没关系,强大的IDEA早就想到了。
点左侧按钮,然后这才是我们想要的最终格式。
设置CORS
还记得我们在前面遇到的跨域的问题吗?我们在启动项 Application
做了跨域设置。
没错,我们是这样解决的。但是现在问题又来了,我们又新建了一个 TeacherController
控制器,有了新的路由 /Teacher
,而原来原来添加的 addMapping
依然映射到 /helloWorld
这个路由上。所以为了让它映射到我们新的路由,我们可以在上 addMapping
添加一个 /Teacher
。
但是,如果我们每新加一个路由就要重新设置一次跨域,这就太麻烦了。所以,为了减少我们的工作量,少做重复工作,我们最终将 addMapping
设置为 /**
。
最后再重启一下项目,没有报错。
查看示例代码
git checout -f 3.2.6-api-cotroller-cors-set
作者:朴世超