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

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上连接如下:

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

默认的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; 

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

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) 

表数据如下:

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

代码

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


References:

Docker Image

Statements Insert

发表评论

相关文章