2020年10月15日20:42,重写一遍,加深印象
0、new Spring Starter Project
选择 Spring Boot DevToools、Spring Web、MySQL Driver、MyBatis Framework
1、配置文件
在配置文件application.properties
中连接数据库
# 数据源
# mybatis 是基于 Java 的 SQL 映射框架
# 使用 XML 或者 注解 实现存储过程 或 SQL语句到Java中方法的映射
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/hr?serverTimezone=UTC
spring.datasource.username=hr
spring.datasource.password=hr
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
server.port=9000
logging.level.web=debug
spring.mvc.log-request-details=true
2、数据库
在数据库中创建需要操作的数据库表,放一些初始数据
3、在包中新建
- Staff:
(实体类)
,标准的OOP对象,属性是数据库表中的字段
public class Staff {
private int id;
private String name;
private String tel;
public Staff() {
super();
}
public Staff(int id, String name, String tel) {
super();
this.id = id;
this.name = name;
this.tel = tel;
}
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 String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
@Override
public String toString() {
return "Staff [id=" + id + ", name=" + name + ", tel=" + tel + "]";
}
}
- StaffMapper:
(接口)
实现 实体类 到关系数据库 的映射- @Mapper 注解整个接口
- 定义 增 查 更 删 方法,在接口Mapper里只有
查
有返回值 - 分别为增 查 更 删 用注解@Insert("")、@Select("")、@Update("")、@Delete("") 写业务SQL
- 为方法写上文档描述
/**
* Description: 实现 实体Staff 到 关系数据库SQL 的映射
*
* @author young
* @date 2020年10月15日 下午7:50:34
*/
@Mapper
public interface StaffMapper {
// CRUD
//查询所有员工
@Select("select * from staff")
List<Staff> findAll();
//根据ID 查询员工
@Select("select * from staff where id=#{id}")
Staff findById(int id);
//创建一个员工
@Insert("insert into staff(name, tel) values(#{name}, #{tel})")
void create(Staff staff);
//更新员工
@Update("update staff set name=#{name}, tel=#{tel} where id=#{id}")
void update(Staff staff);
//删除
@Delete("delete from staff where id=#{id}")
void delete(int id);
}
- StaffController:
(实体类控制器类)
RESTful 风格的API- @RestController、@RequestMappint("/staff") 注解整个类
- 定义对应StaffMapper接口的 增 查 更 删 public 方法,在实体控制器类里除了
查
有返回值,增
也有返回值。 - 分别为 增 查 更 删 用 HTTP 协议中的请求方法 (POST/GET/PUT/DELETE) 改变资源状态,显示在Java代码中就是在各个方法上加注解 @PostMapping、@GetMapping、@PutMapping、@DeleteMapping,以及需要映射的URL
- 在实体类控制器类中加入 依赖注入:
@Autowired
,
/**
* Description: 员工控制器
* RESTful 风格的API
*
* @author young
* @date 2020年10月15日 下午8:03:14
*/
@RestController
@RequestMapping("/staff")
public class StaffController {
// 依赖注入
@Autowired
StaffMapper staffMapper;
// GET --> '/staff'
@GetMapping
public List<Staff> find() {
return staffMapper.findAll();
}
// GET --> '/staff/123'
@GetMapping("/{id}")
public Staff load(@PathVariable int id) {
return staffMapper.findById(id);
}
// POST --> '/staff'
@PostMapping
public Staff create(Staff staff) {
staffMapper.create(staff);
return staff;
}
// PUT --> '/staff/123'
@PutMapping("/{id}")
public void update(@PathVariable int id, @RequestBody Staff staff) {
staff.setId(id);
staffMapper.update(staff);
}
// DELETE --> '/staff/123'
@DeleteMapping("/{id}")
public void delete(@PathVariable int id) {
staffMapper.delete(id);
}
}