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
?
final
是java
中的一个关键字,意思为恒定不变
。 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); }
|