Spring Data JDBC
需要先在数据库里面建表
sql
-- 创建学生表
CREATE TABLE student ( -- student 表名
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键id', -- 主键
name VARCHAR(50) NOT NULL COMMENT '姓名', -- 学生姓名
age TINYINT COMMENT '年龄', -- 学生年龄
gender CHAR(1) COMMENT '性别', -- 学生性别
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' -- 数据创建时间
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表'; -- 学生表
1.application.yml 配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/库名
username: root
password: 密码
driver-class-name: com.mysql.cj.jdbc.Driver
2.实体类,建文件(Student)
java
package
import lombok.Data;
import org.springframework.data.annotation.Id;
@Data
public class Student {
@Id
private Integer id;
private String name;
private Integer age;
private String gender;
private LocalDateTime createTime;
}
3.Repository 接口,建文件(StudentRepository )
java
package
import org.springframework.data.jdbc.repository.query.Query;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
public interface StudentRepository extends CrudRepository<Student, Integer> {
@Query("select * from student")
List<Student> findAllStudent();
}
4.Controller 注入调用,建文件(StudentController )
java
package
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/student")
public class StudentController {
private final StudentRepository studentRepository;
// 构造注入
public StudentController(StudentRepository studentRepository) {
this.studentRepository = studentRepository;
}
/**
* 新增
* GET /student/add
*/
@GetMapping("/add")
public Student add() {
Student stu = new Student();
stu.setName("小科");
stu.setAge(25);
stu.setGender("男");
// stu.setCreateTime(LocalDateTime.now()); //需要导import java.time.LocalDateTime;
stu.setCreateTime(java.time.LocalDateTime.now());
Student save = studentRepository.save(stu);
return save;
}
/**
* 修改:save 方法,id有值就是更新
* GET /student/update
*/
@GetMapping("/update")
public Student update() {
Student stu = new Student();
stu.setId(1); // 要修改的id
stu.setName("修改后的名字");
stu.setAge(25);
stu.setGender("女");
stu.setCreateTime(java.time.LocalDateTime.now());
Student save = studentRepository.save(stu);
return save;
}
/**
* 根据id查询单个
* GET /student/get/1
*/
@GetMapping("/get/{id}")
public Optional<Student> getById(@PathVariable Integer id) {
return studentRepository.findById(id);
}
/**
* 查询全部(框架自带findAll,返回Iterable)
* GET /student/list
*/
@GetMapping("/list")
public Iterable<Student> listAll() {
return studentRepository.findAll();
}
/**
* 查询全部(你自己写的@Query自定义方法,返回List)
* GET /student/list2
*/
@GetMapping("/list2")
public List<Student> findAllStudent() {
return studentRepository.findAllStudent();
}
/**
* 根据id删除
* GET /student/del/1
*/
@GetMapping("/del/{id}")
public String delete(@PathVariable Integer id) {
studentRepository.deleteById(id);
return "删除成功";
}
/**
* 统计总条数
* GET /student/count
*/
@GetMapping("/count")
public long count() {
return studentRepository.count();
}
}
注意:Student、StudentRepository、StudentController需要在同一文件下。