Java springboot调用数据库的基本流程

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需要在同一文件下。

相关推荐
星恒随风15 分钟前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
秋饼1 小时前
GPT-Live 全双工语音 API Java 服务端落地实战:事件协议、会话恢复与生产踩坑
java·ai·技术分享·后端开发
SL_staff1 小时前
为什么企业级自动化不能只靠AI编排?——逻辑引擎在确定性业务场景中的不可替代性
java·开源·产品
Pniubi2 小时前
MySQL靠什么实现事务的?事务隔离级别有哪些?
java·数据库·mysql
数据库小学妹3 小时前
pgbouncer 事务池:prepared statement、临时表与会话状态
数据库·后端·postgresql
松仔log3 小时前
Kotlin中级——callbackFlow
java·前端·kotlin
知守观4 小时前
同一个团队两套分包:DDD 四层落地后,domain 层最大的类还是 5885 行
java·后端·领域驱动设计
Lucifer三思而后行4 小时前
最近折腾了一下金仓数据库的备份恢复
数据库·备份恢复
文丑颜不良啊4 小时前
LeetCode2541~2560题目解析
java·leetcode