建立教师控制器
有了数据表,我们就可以开始建立教师控制器了。
新建控制器
在 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
作者:朴世超