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=8082spring.datasource.url=jdbc:db2://localhost:50000/testdbspring.datasource.username=db2inst1spring.datasource.password=pkslowspring.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@Slf4jpublic 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/p...


References:

Docker Image

Statements Insert