📜  弹簧靴 |如何使用 Spring Data JPA 访问数据库

📅  最后修改于: 2021-09-09 16:23:51             🧑  作者: Mango

Spring Data JPA是一种实现 JPA 存储库以在应用程序中轻松添加数据访问层的方法。 CRUD 代表创建、检索、更新、删除,它们是可以在数据库中执行的可能操作。在本文中,我们将看到一个示例,说明如何使用 Spring Data JPA 在 Spring Boot 应用程序中访问数据库(本文为 MySQL)中的数据。

为了学习如何创建一个 spring boot 项目,请参考这篇文章。

数据库是相互关联的数据的集合,有助于有效地从数据库中检索、插入和删除数据,并以表、视图、模式、报告等形式组织数据。因此,对于任何应用程序,数据库是其中之一最重要的模块,需要有一种与它通信的方式。因此,按照以下步骤使用 Spring Data JPA 访问数据库:

  1. 转到 spring initializr 并创建一个具有以下依赖项的新项目:
    • 春网
    • 弹簧数据 JPA
    • MySQL 驱动程序
  2. 下载启动项目并将其导入到 IDE 中。
  3. 项目同步后,我们将创建一个模型类公司,注解@Entity ,这意味着该类映射到数据库中的表。添加数据类型与数据库中的列相同的数据成员,并生成构造函数和getter。将注释@Id添加到数据成员,该成员将作为表中的主键属性和@Generatedvalue(strategy = generationtype.auto)以自动增加主键属性。下面是这个类的实现:
    @Entity
    public class Company {
      
        // Primary ID which increments
        // automatically when new entry
        // is added into the database
        @Id
        @GeneratedValue(strategy
                        = GenerationType.AUTO)
        int id;
      
        String name;
      
        // In months
        int duration;
        String profile;
      
        // Can be 0
        int stipend;
        boolean workFromHome;
      
        public Company()
        {
        }
      
        // Parameterized constructor
        public Company(String name, int duration,
                       String profile,
                       int stipend,
                       boolean workFromHome)
        {
            this.name = name;
            this.duration = duration;
            this.profile = profile;
            this.stipend = stipend;
            this.workFromHome = workFromHome;
        }
      
        // Getters and setters of
        // the variables
        public int getId()
        {
            return id;
        }
      
        public String getName()
        {
            return name;
        }
      
        public int getDuration()
        {
            return duration;
        }
      
        public String getProfile()
        {
            return profile;
        }
      
        public int getStipend()
        {
            return stipend;
        }
      
        public void setId(int id)
        {
            this.id = id;
        }
      
        public boolean isWorkFromHome()
        {
            return workFromHome;
        }
    
  4. 现在,创建与注释@Repository将实现CrudRepository接口CompanyRepository。执行 CRUD 操作的函数将在界面中定义,如下所示:
    @Repository
    public interface CompanyRepository
        extends CrudRepository {
      
        Company findById(int id);
        List findAll();
        void deleteById(int id);
    }
    

    注意:这些函数不会被实现,因为它们已经在CrudRepository 中实现了。

  5. 现在,我们将创建 REST API(GET、POST、PUT、DELETE),如下所示:
    @RestController
    public class CompanyController {
        @Autowired
        private CompanyRepository repo;
      
        // Home Page
        @GetMapping("/")
        public String welcome()
        {
            return ""
                + "

    WELCOME

    "             + "";     }        // Get All Notes     @GetMapping("/company")     public List getAllNotes()     {         return repo.findAll();     }        // Get the company details by     // ID     @GetMapping("/company/{id}")     public Company getCompanyById(         @PathVariable(value = "id") int id)     {         return repo.findById(id);     }        @PostMapping("/company")     @ResponseStatus(HttpStatus.CREATED)     public Company addCompany(         @RequestBody Company company)     {         return repo.save(company);     }        @DeleteMapping("/delete/{id}")     public void deleteStudent(         @PathVariable(value = "id") int id)     {         repo.deleteById(id);     }        @PutMapping("/company/{id}")     public ResponseEntity updateStudent(         @RequestBody Company company,         @PathVariable int id)     {            Optional companyRepo             = Optional.ofNullable(                 repo.findById(id));            if (!companyRepo.isPresent())             return ResponseEntity                 .notFound()                 .build();            company.setId(id);            repo.save(company);            return ResponseEntity             .noContent()             .build();     }
  6. 现在,打开 application.properties 文件并添加以下代码。将database_name替换为包含表Company的数据库,将username替换为 mysql 服务器的用户名(默认为 root),将password替换为 mysql 密码。
  7. 这样就完成了与数据库建立连接的过程。现在,我们构建并运行项目并调用不同的 API。

    注意: Postman 通常被首选用于测试调用 API,因此我们使用 postman 工具来测试项目。

  8. 输出:

    • 数据库:

    • 使用 POSTMAN 集合进行测试: