如何通过springboot来写一个简单的接口?
想要知道怎么写可能只需要几步,半小时足矣
本篇文章只是教大家如何快速地使用。
但是具体是为什么这样用?以及背后的原理,请大家先认真学习javaweb-servlet-ssm框架等等,这里就不做过多的讲解。
首先在idea中新建项目:
new project-spring initializr一路next(如有需要修改的信息,也可以自己修改,不重要)
注意,这里要记得选上,作用是在初始化的时候,需要那些东西idea就帮你初始化进去(当然,后期也能自己手动加,但是这里为了方便学习,还是该选的都选上)
再在MySQL数据库中准备一个student表:
接着,把src\main\resources中的application.properties文件改名成application.yml,这是因为yml文件的结构比较清晰,好看易懂
application.yml文件是一个配置文件,作用是可以配置一些数据库信息,他来告诉springboot我们的数据库账号密码呀,表名是啥等等。
以下是我的application.yml,你们可以根据自己的实际情况修改对应的信息:
server:
port: 8081
spring:
#数据库连接配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dt55?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: root
password: 888888
#mybatis的相关配置
mybatis:
#mapper配置文件
mapper-locations: classpath:mapper/*.xml
验证先前配置是否成功:点开src\main\java\com\wzy\demo\DemoApplication.java
点击箭头所指的运行按钮:
若控制台出现:
并且在浏览器中输入http://localhost:8081/会出现:
则代表配置成功
在src\main\java\com\wzy\demo目录下新建一个名为entity包
再在entity包下,新建一个名为Student的class,这个Student即为实体类,该实体类即对应数据库中的表,类中的属性与数据库字段保持一致,并且加上构造函数以及get、set方法:
public class Student {
private int id;
private String name;
private int age;
private String hobby;
private String address;
public Student(int id, String name, int age, String hobby, String address) {
this.id = id;
this.name = name;
this.age = age;
this.hobby = hobby;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
操作的数据库的动作比如:查询、更新、删除等等
这些动作就是mapper
在src\main\java\com\wzy\demo目录下新建一个名为mapper包
再在mapper包下,新建一个接口StudentMapper
这里假设,我们想要找到所有的学生信息。
@Mapper
public interface StudentMapper {
List<Student> findAllStudent();
}
再在resources目录下建立一个名为mapper的包,并且在mapper的包下新建一个名为StudentMapper.xml的文件。这个文件就是告诉java具体要写哪些sql语句。
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wzy.demo.mapper.StudentMapper">
<select id="findAllStudent" resultType="com.wzy.demo.entity.Student">
SELECT * FROM student
select>
mapper>
注意,这里的namespace就是指向哪一个mapper
id是mapper里面的方法名,resultType就是返回的类型
这里与前文中application.yml的mapper-locations相对应
步骤三已经得到了数据了,但是展示给前端时,需要根据自己的业务逻辑对数据进行进一步的加工,所以这里在src\main\java\com\wzy\demo下建立service包,并且在service包中,新建一个StudentService类,此类的作用是处理相应的业务逻辑
//@Service的意思是将其实例化,
//之前如果有一个class,是不是需要new一个对象才可以用,
//这里就可以理解成会自动帮你new,new完了之后,将实例加到了spring容器当中
@Service
public class StudentService {
//引进StudentMapper,@Autowired的意思就是将其实例化,通过autowired从spring容器中拿出来,供我们使用
@Autowired
private StudentMapper studentMapper;
//处理业务逻辑,这里由于业务过于简单,就空着,查询出什么我就返回什么
public List<Student> findAllStudent() {
return studentMapper.findAllStudent();
}
}
在src\main\java\com\wzy\demo下建立controller包,并且在controller包中,新建一个StudentController类,此类的作用是将信息传到前端,就是负责给浏览器返回相应的数据。
//@RestController会自动帮一个对象转换成json的格式
@RestController
public class StudentController {
@Autowired
private StudentService studentService;
//@RequestMapping("/getstudent")的意思告诉前端相应的地址访问
@RequestMapping("/getstudent")
public List<Student> getStudent(){
return studentService.findAllStudent();
}
}
浏览器输入:http://localhost:8081/getstudent
出现数据库相关信息,试验成功