通过Docker启动DB2,并在Spring Boot整合DB2

文章介绍了如何通过Docker快速安装IBM的DB2数据库,并提供了连接和测试数据库的步骤。接着,展示了如何在SpringBoot应用中整合DB2,包括添加依赖、配置数据源和创建Entity及Repository,最后通过一个初始化方法测试了数据操作。
摘要由CSDN通过智能技术生成

1 简介

DB2是IBM的一款优秀的关系型数据库,简单学习一下。

2 Docker安装DB2

为了快速启动,直接使用Docker来安装DB2。先下载镜像如下:

docker pull ibmcom/db2:11.5.0.0

启动数据库如下:

docker run -itd \
  --name mydb2 \
    --privileged=true \
    -p 50000:50000 \
    -e LICENSE=accept \
    -e DB2INST1_PASSWORD=pkslow \
    -e DBNAME=testdb \
    ibmcom/db2:11.5.0.0

这样获得的数据库,具体信息如下:

连接URL:jdbc:db2://localhost:50000/testdb

用户名:db2inst1

密码:pkslow

在IDEA上连接如下:

默认的Schema为DB2INST1,测试SQL如下:

创建表:

CREATE TABLE EMPLOYEE_SALARY
(DEPTNO   CHAR(3)      NOT NULL,
 DEPTNAME VARCHAR(36)  NOT NULL,
 EMPNO    CHAR(6)      NOT NULL,
 SALARY   DECIMAL(9,2) NOT NULL WITH DEFAULT);

插入数据:

INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('001', 'IT', '001322', 80000.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('001', 'IT', '001323', 20000.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('002', 'Architecture', '001324', 3220.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('002', 'Architecture', '001325', 8000.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('003', 'Front Office', '001326', 13320.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('001', 'IT', '001327', 5433.00);

查询:

SELECT * FROM DB2INST1.EMPLOYEE_SALARY;

Spring Boot整合DB2

添加相关依赖:

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>
  <dependency>
    <groupId>com.ibm.db2</groupId>
    <artifactId>jcc</artifactId>
    <version>11.5.0.0</version>
  </dependency>
</dependencies>

配置相关属性:

server.port=8082
spring.datasource.url=jdbc:db2://localhost:50000/testdb
spring.datasource.username=db2inst1
spring.datasource.password=pkslow
spring.jpa.generate-ddl=true

创建Entity:

package com.pkslow.springboot.jpa.db2.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "EMPLOYEE", schema = "DB2INST1")
public class Employee {
    @Id
    private Long id;
    private String name;
}

创建Repository类用于操作数据库:

public interface EmployeeRepository extends CrudRepository<Employee, Long> {
}

最后,写个方法测试一下:

@Configuration
@Slf4j
public class TestConfig {
    @Autowired
    private EmployeeRepository repository;

    @PostConstruct
    public void init() {
        Employee employee1 = new Employee(1L, "Larry Deng");
        Employee employee2 = new Employee(2L, "LarryDpk");
        Employee employee3 = new Employee(3L, "Pkslow");

        repository.deleteAll();
        repository.save(employee1);
        repository.save(employee2);
        repository.save(employee3);

        List<Employee> employees = StreamSupport.stream(repository.findAll().spliterator(), false)
                .collect(Collectors.toList());

        employees.forEach(e -> log.info(e.toString()));

    }
}

启动后,日志打印正常如下:

2022-02-28 23:26:22.476  INFO 60847 --- [           main] c.pkslow.springboot.jpa.db2.TestConfig   : Employee(id=1, name=Larry Deng)
2022-02-28 23:26:22.476  INFO 60847 --- [           main] c.pkslow.springboot.jpa.db2.TestConfig   : Employee(id=2, name=LarryDpk)
2022-02-28 23:26:22.476  INFO 60847 --- [           main] c.pkslow.springboot.jpa.db2.TestConfig   : Employee(id=3, name=Pkslow)

表数据如下:

代码

代码请看GitHub: https://github.com/LarryDpk/pkslow-samples


References:

Docker Image

Statements Insert

Docker中部署和管理Spring Boot项目的配置文件通常涉及以下几个步骤: 1. **创建Dockerfile**:在Spring Boot项目的根目录下创建一个名为`Dockerfile`的文本文件,这个文件将告诉Docker如何构建镜像。首先,需要指定基础镜像,比如`openjdk:8-jdk-alpine`,然后COPY你的项目目录到容器内部,并设置工作目录。 ```Dockerfile FROM openjdk:8-jdk-alpine WORKDIR /app COPY . /app EXPOSE 8080 ENTRYPOINT ["java", "-jar", "your-app.jar"] ``` 2. **打包应用**:确保你的Spring Boot应用被打包成了`.jar`文件(通常是`application.jar`),这通常通过Maven或Gradle的`build`命令完成。 3. **运行Docker容器**:当你有新的更改时,可以在本地使用`docker build -t your-image-name .`命令来构建新的镜像,然后运行它:`docker run -p 8080:8080 your-image-name`。 `-p`选项用于端口映射,将宿主机的8080端口映射到容器内的8080端口。 4. **配置文件管理**:Spring Boot默认支持外部配置文件,如`application.properties`或`application.yml`。你可以把这些文件放在项目的资源目录下,在`Dockerfile`中COPY过去,然后在容器启动时通过环境变量提供配置值,例如`-e spring.config.name=prod -e spring.config.location=/config`。 5. **使用环境变量覆盖配置**:如果你希望在生产环境中更改某些配置,可以使用环境变量替换配置文件中的静态值。例如,数据库连接URL可能从环境变量读取。 6. **卷挂载**:如果你想在运行容器时保持配置文件的持久化,可以使用Docker的卷挂载功能,但这不是标准做法,因为配置文件应该尽可能地与应用打包在一起。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值