Spring Boot集成Liquibase快速入门Demo

在这篇文章中,我们将详细介绍如何在Spring Boot项目中集成Liquibase,以实现数据库版本控制。Liquibase是一款开源的数据库重构工具,能够帮助我们管理数据库的变更,保证数据库结构与代码同步。本文将包含三个实用的代码示例,每个示例都会包含详细的Java代码,并逐行加上中文注释。

准备工作

在开始之前,请确保你已经安装了以下工具:

  1. JDK 8或以上版本
  2. Maven 3.5或以上版本
  3. 一个IDE,比如IntelliJ IDEA

一、创建Spring Boot项目并添加依赖

首先,我们需要创建一个Spring Boot项目,并添加Liquibase的依赖。

步骤:

1、 创建一个新的Spring Boot项目,可以使用Spring Initializr生成项目骨架。

2、pom.xml文件中添加Liquibase依赖:

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Spring Boot Starter Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
    <!-- Liquibase Core -->
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
    </dependency>
    
    <!-- H2 Database -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency></dependencies>

二、配置Liquibase

1、src/main/resources目录下创建liquibase文件夹,然后在该文件夹下创建changelog文件夹。

2、src/main/resources/liquibase/changelog目录下创建一个名为db.changelog-master.yaml的文件。

3、application.properties文件中添加以下配置:

spring.datasource.url=jdbc:h2:mem:testdbspring.datasource.driverClassName=org.h2.Driverspring.datasource.username=saspring.datasource.password=passwordspring.liquibase.change-log=classpath:liquibase/changelog/db.changelog-master.yaml

三、编写第一个数据库变更日志

接下来,我们将创建第一个数据库变更日志,来初始化我们的数据库。

1、src/main/resources/liquibase/changelog目录下创建一个名为db.changelog-1.0.yaml的文件。

2、db.changelog-1.0.yaml文件中添加以下内容:

databaseChangeLog:
  - changeSet:
      id: 1
      author: yourname
      changes:
        - createTable:
            tableName: person
            columns:
              - column:
                  name: id
                  type: BIGINT
                  autoIncrement: true
                  constraints:
                    primaryKey: true
                    nullable: false
              - column:
                  name: first_name
                  type: VARCHAR(50)
                  constraints:
                    nullable: false
              - column:
                  name: last_name
                  type: VARCHAR(50)
                  constraints:
                    nullable: false
              - column:
                  name: email
                  type: VARCHAR(100)
                  constraints:
                    nullable: false

3、 更新db.changelog-master.yaml文件:

databaseChangeLog:
  - include:
      file: classpath:liquibase/changelog/db.changelog-1.0.yaml

四、创建实体类和存储库

接下来,我们将创建一个Person实体类以及对应的存储库。

1、src/main/java/com/example/demo目录下创建一个名为Person.java的文件:

package com.example.demo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

// 实体类Person@Entitypublic class Person {

    // 主键ID,自增
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    // 姓
    private String firstName;
    
    // 名
    private String lastName;
    
    // 电子邮件
    private String email;

    // Getter和Setter方法
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

2、src/main/java/com/example/demo目录下创建一个名为PersonRepository.java的文件:

package com.example.demo;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

// Person存储库接口@Repositorypublic interface PersonRepository extends JpaRepository<Person, Long> {
}

五、创建控制器类

接下来,我们将创建一个控制器类,用于处理对Person实体的HTTP请求。

1、src/main/java/com/example/demo目录下创建一个名为PersonController.java的文件:

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

// REST控制器类,用于处理HTTP请求@RestController@RequestMapping("/persons")
public class PersonController {

    @Autowired
    private PersonRepository personRepository;

    // 获取所有Person
    @GetMapping
    public List<Person> getAllPersons() {
        System.out.println("获取所有Person");
        return personRepository.findAll();
    }

    // 创建一个新的Person
    @PostMapping
    public Person createPerson(@RequestBody Person person) {
        System.out.println("创建一个新的Person");
        return personRepository.save(person);
    }

    // 根据ID获取一个Person
    @GetMapping("/{id}")
    public Person getPersonById(@PathVariable Long id) {
        System.out.println("根据ID获取一个Person");
        return personRepository.findById(id).orElse(null);
    }

    // 根据ID更新一个Person
    @PutMapping("/{id}")
    public Person updatePerson(@PathVariable Long id, @RequestBody Person personDetails) {
        Person person = personRepository.findById(id).orElse(null);
        if (person != null) {
            person.setFirstName(personDetails.getFirstName());
            person.setLastName(personDetails.getLastName());
            person.setEmail(personDetails.getEmail());
            System.out.println("更新Person的信息");
            return personRepository.save(person);
        }
        return null;
    }

    // 根据ID删除一个Person
    @DeleteMapping("/{id}")
    public void deletePerson(@PathVariable Long id) {
        System.out.println("删除Person");
        personRepository.deleteById(id);
    }
}

六、运行应用程序

现在我们已经完成了所有的配置和代码编写,接下来就可以运行Spring Boot应用程序了。

1、 在项目根目录下运行以下命令:

mvn spring-boot:run

2、 访问http://localhost:8080/persons,你将看到输出结果。

结论

通过以上步骤,我们成功地在Spring Boot项目中集成了Liquibase,并创建了一个简单的数据库变更日志,实现了Person实体的CRUD操作。Liquibase使得数据库版本控制变得非常简单和方便,是现代微服务架构中不可或缺的一部分。

希望这篇文章对你有所帮助,如果有任何问题或建议,欢迎留言讨论。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员秋天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值