3. 用户模块基础代码
- spring boot运行总体流程:前端发起请求 -> 后端controller -> 后端service -> mapper -> sql
- 我们从后往前写,先写service
3.1 实现service
service层是一个接口,实现类的形式。
首先在biz/user/service下创建UserService。然后根据文档中表格信息实现接口:
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
37package com.lyingedu.questionnaire.biz.user.service;
import com.lyingedu.questionnaire.dbmap.entities.UserInfo;
import java.util.List;
public interface UserService {
/**
* 增加用户
* @param userInfo
* @return
*/
int addUserInfo(UserInfo userInfo);
/**
* 修改用户
* @param userInfo
* @return
*/
int modifyUserInfo(UserInfo userInfo);
/**
* 删除用户
* @param id
* @return
*/
int deleteUserById(String id);
/**
* 查询用户列表
* @return
*/
List<UserInfo> queryUserList(UserInfo userInfo);
}在biz/user/service下创建UserServiceImpl。编写service实现类
- 先写public class UserServiceImpl implements UserService然后鼠标放到下划线,点击实现)
- 然后在类上面写注释:@Service让springboot知道这是一个操作数据库的service
写入UserInfoMapper属性,属性需要在实现类里面说明。@resource注解可以让springboot自动给他注入依赖,否则UserInfoMapper找不到
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
37package com.lyingedu.questionnaire.biz.user.service;
import com.lyingedu.questionnaire.dbmap.entities.UserInfo;
import com.lyingedu.questionnaire.dbmap.imapper.UserInfoMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
//让spring boot知道这是操作数据库的service
public class UserServiceImpl implements UserService{
//resource注解可以让springboot自动给他注入依赖,否则UserInfoMapper找不到
private UserInfoMapper userInfoMapper; //属性需要在实现类中说明
public int addUserInfo(UserInfo userInfo) {
//TODO
return 0;
}
public int modifyUserInfo(UserInfo userInfo) {
return 0;
}
public int deleteUserById(String id) {
return 0;
}
public List<UserInfo> queryUserList(UserInfo userInfo) {
return null;
}
}
3.2 实现controller
在biz/user/controller下创建UserController类,并注解@RestController,使用rest的接口风格;注解@RequestMapping(“/admin”),使用request请求
HttpResponseEntity是一个通用的给前端返回结果的类,因此我们在questionnaire目录下创建一个beans目录存放一些通用的bean,在beans里面创建HttpResponseEntity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20package com.lyingedu.questionnaire.beans;
import lombok.Data;
import java.io.Serializable;
//lombook的data注解可以省略get set方法
public class HttpResponseEntity implements Serializable {
private String code;//状态码
private Object data;//返回数据
private String message;//状态消息
public HttpResponseEntity(){ //默认初始信息
this.code="0";
this.message="操作失败";
}
}- 注意:由于代码中使用了lombok,你需要在idea中下载lombok插件并启用其注解处理(一般idea会提示你)
继续完善controller:
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
62
63
64
65
66
67
68
69
70
71package com.lyingedu.questionnaire.biz.user.controller;
import com.lyingedu.questionnaire.beans.HttpResponseEntity;
import com.lyingedu.questionnaire.biz.user.service.UserService;
import com.lyingedu.questionnaire.dbmap.entities.UserInfo;
import com.lyingedu.questionnaire.dbmap.imapper.UserInfoMapper;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//rest的接口风格
//使用request请求
public class UserController {
private UserService userService;
/**
* 用户列表
* @param userInfo
* @return
*/
public HttpResponseEntity queryUserList(UserInfo userInfo){
//TODO
return null;
}
/**
* 增加用户
* @param userInfo
* @return
*/
public HttpResponseEntity addUserInfo(UserInfo userInfo) {
//TODO
return null;
}
/**
* 修改用户
* @param userInfo
* @return
*/
public HttpResponseEntity modifyUserInfo(UserInfo userInfo) {
//TODO
return null;
}
/**
* 删除用户
* @param userInfo
* @return
*/
public HttpResponseEntity deleteUserById(UserInfo userInfo) {
//TODO
return null;
}
/**
* 用户登录
* @param userInfo
* @return
*/
public HttpResponseEntity userLogin(UserInfo userInfo) {
//TODO
return null;
}
}