SpringBoot写接口不需要mybatis-plus

## 项目文件夹名称

新建的项目在/src/java/com.你的项目名字/新建四个Package文件夹分别叫 controller,Mapper,entry,service

controller:控制层 ,dao(mapper):数据层,service:服务层,domin/entry:实体类

编写application

在项目文档中,打开 /src/resources/application.yml配置文件

1
2
3
4
5
6
7
8
9
server:
port: 8080

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1?characterEncoding=utf-8&useSSl=false&serverTimezone=UTC
username: root
password: 123456

编写实体类

在entry文件夹下,创建一个实体类,名称为Student.java。注:名称也可以为个人所需要编写的实体类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {

@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String username;
private String password;
private String email;
private String phone;

public Student() {
}

public Student(Integer id, String username, String password, String email, String phone) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
this.phone = phone; }

public Integer getId() {
return id;}

public void setId(Integer id) {
this.id = id;}

public String getUsername() {
return username;}

public void setUsername(String username) {
this.username = username;}

public String getPassword() {
return password;}

public void setPassword(String password) {
this.password = password;}

public String getEmail() {
return email;}

public void setEmail(String email) {
this.email = email;}

public String getPhone() {
return phone;}

public void setPhone(String phone) {
this.phone = phone;}

@Override
public String toString() {
return "Student{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
", phone='" + phone + '\'' +
'}';}}

编写Mapper/Dao接口

添加一条数据

1
2
@Insert("insert into student (username, password, email, phone) values(#{username}, #{password}, #{email}, #{phone})")
public int insert(Student student);

删除一条数据

1
2
@Delete("delete from student where id = #{id}")
public int delete(Integer id);

修改一条数据

1
2
@Update("update student set username = #{username}, password = #{password}, email = #{email}, phone = #{phone} where id = #{id}")
public int update(Student student);

查找一条数据

1
2
@Select("select * from student where id = #{id}")
public Student getById(Integer id);

查找全部数据

1
2
@Select("select * from student")
public List<Student> getAll();

service

新建一个接口

我取名为StudentService

可以按照个人写接口名称

使用布尔值Boolean来进行判断是否增加修改删除成功

1
2
3
4
5
6
7
8
boolean insert(Student student);

boolean update(Student student);

boolean delete(Integer id);

Student getById(Integer id);
List<Student> getAll();

在service文件夹下新建一个Package,名称为impl

impl文件夹下新建一个名为StudentServiceimpl.java类 名字按个人所需要去编写

注意:千万不要忘记@Service

然后连接service 文件夹下StudentService接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@Service
public class StudentServiceImpl implements StudentService {

@Autowired
private StudentMapper studentMapper;

@Override
public boolean insert(Student student) {
return studentMapper.insert(student) > 0;
}

@Override
public boolean update(Student student) {
return studentMapper.update(student) > 0;
}

@Override
public boolean delete(Integer id) {
return studentMapper.delete(id) > 0;
}

@Override
public Student getById(Integer id) {
return studentMapper.getById(id);
}

@Override
public List<Student> getAll() {
return studentMapper.getAll();
}

Controller

在Controller文件下创建三个.java类 分别为Code、Result、StudentController

注解:

@Autowired 可以对类成员``变量方法构造函数进行标注,完成自动装配的工作

@GetMapping,处理get请求
@PostMapping,处理post请求
@PutMapping,处理put请求
@DeleteMapping,处理delete请求

@RequestBody:主要用来接收前端传递给后端的json字符串中的数据的

@PathVariable :通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过

第一步:编写Result.java

以下数据给StudentController.java 用于调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class Result {

private Integer code;
private Object data;
private String msg;

public Result(Integer code, Object data) {
this.code = code;
this.data = data;
}

public Result(Integer code, Object data, String msg) {
this.code = code;
this.data = data;
this.msg = msg;
}

public Integer getCode() {
return code;
}

public void setCode(Integer code) {
this.code = code;
}

public Object getData() {
return data;
}

public void setData(Object data) {
this.data = data;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}

第二步:编写Code.java

什么是final

finaljava中的一个关键字,意思为恒定不变。 java中final数据具体有两个含义:1、对于基本数据类型,表示永不改变的编译时常量;2、对于普通对象,表示该引用恒定不变不能指向另外一个对象,但是该对象本身是可以进行修改的。

以下代码用于在StudentController.java中用于输出。例如:添加成功输出20001 否则输出2002

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Code {
public static final Integer INSERT_OK = 20001;
public static final Integer INSERT_ERR = 20002;

public static final Integer UPDATE_OK = 20011;
public static final Integer UPDATE_ERR = 20012;

public static final Integer DELETE_OK = 20021;
public static final Integer DELETE_ERR = 20022;

public static final Integer SELECT_OK = 20031;
public static final Integer SELECT_ERR = 20032;
}

第三步:编写StudentController.java

注意不要在开头忘了@RestController@RequestMapping("/路径")

添加数据

1
2
3
4
5
@PostMapping
public Result insert(@RequestBody Student student){
boolean flag = studentService.insert(student);
return new Result(flag? Code.INSERT_OK: Code.INSERT_ERR, flag);
}

修改

1
2
3
4
5
@PutMapping
public Result update(@RequestBody Student student){
boolean flag = studentService.update(student);
return new Result(flag? Code.UPDATE_OK: Code.UPDATE_ERR, flag);
}

删除

1
2
3
4
5
@DeleteMapping("/{id}")
public Result delete(@PathVariable Integer id){
boolean flag = studentService.delete(id);
return new Result(flag? Code.DELETE_OK: Code.DELETE_ERR, flag);
}

查询一条数据

1
2
3
4
5
6
7
8
9
10
@GetMapping("/{id}")
public Result getById(@PathVariable Integer id){
Student student = studentService.getById(id);
if (student == null){
return new Result(Code.SELECT_ERR, "查询失败");
}
Integer code = student != null? Code.SELECT_OK: Code.SELECT_ERR;
String msg = student != null? "查询成功": "查询失败";
return new Result(code, student, msg);
}

查询全部数据

1
2
3
4
5
6
7
@GetMapping
public Result getAll(){
List<Student> studentList = studentService.getAll();
Integer code = studentList != null? Code.SELECT_OK: Code.SELECT_ERR;
String msg = studentList != null? "查询成功": "查询失败";
return new Result(code, studentList, msg);
}