美文网首页
通过Docker启动DB2,并在Spring Boot整合DB2

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

作者: 南瓜慢说 | 来源:发表于2023-01-16 10:05 被阅读0次

    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启动DB2,并在Spring Boot整合DB2

          本文链接:https://www.haomeiwen.com/subject/lkjzcdtx.html