经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
通过Docker启动DB2,并在Spring Boot整合DB2
来源:cnblogs  作者:南瓜慢说  时间:2023/1/18 8:42:49  对本文有异议

1 简介

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

2 Docker安装DB2

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

  1. docker pull ibmcom/db2:11.5.0.0

启动数据库如下:

  1. 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如下:

创建表:

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

插入数据:

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

查询:

  1. SELECT * FROM DB2INST1.EMPLOYEE_SALARY;

Spring Boot整合DB2

添加相关依赖:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-data-jpa</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>com.ibm.db2</groupId>
  12. <artifactId>jcc</artifactId>
  13. <version>11.5.0.0</version>
  14. </dependency>
  15. </dependencies>

配置相关属性:

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

创建Entity:

  1. package com.pkslow.springboot.jpa.db2.entity;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import javax.persistence.Entity;
  6. import javax.persistence.Id;
  7. import javax.persistence.Table;
  8. @Entity
  9. @Data
  10. @AllArgsConstructor
  11. @NoArgsConstructor
  12. @Table(name = "EMPLOYEE", schema = "DB2INST1")
  13. public class Employee {
  14. @Id
  15. private Long id;
  16. private String name;
  17. }

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

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

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

  1. @Configuration
  2. @Slf4j
  3. public class TestConfig {
  4. @Autowired
  5. private EmployeeRepository repository;
  6. @PostConstruct
  7. public void init() {
  8. Employee employee1 = new Employee(1L, "Larry Deng");
  9. Employee employee2 = new Employee(2L, "LarryDpk");
  10. Employee employee3 = new Employee(3L, "Pkslow");
  11. repository.deleteAll();
  12. repository.save(employee1);
  13. repository.save(employee2);
  14. repository.save(employee3);
  15. List<Employee> employees = StreamSupport.stream(repository.findAll().spliterator(), false)
  16. .collect(Collectors.toList());
  17. employees.forEach(e -> log.info(e.toString()));
  18. }
  19. }

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

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

原文链接:https://www.cnblogs.com/larrydpk/p/17058873.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号