【PostgreSQL】PostgreSQL Docker部署 + SpringBoot集成

【PostgreSQL】PostgreSQL Docker部署 + SpringBoot集成

码农世界 2024-05-24 前端 64 次浏览 0个评论

PostgreSQL Docker部署 + SpringBoot集成

0 背景

最近公司有新项目需要使用 PostgreSQL ,于是简单学习了一下,并记录一下过程。

1 安装PostgreSQL

1.1 拉取镜像

docker pull mdillon/postgis

1.2 启动容器

docker run --name postgis -e POSTGRES_PASSWORD=postgis -p 5432:5432 -d mdillon/postgis:latest

注:其中 POSTGRES_PASSWORD=postgis 设置了密码为 postgis

2 安装pgadmin4

pgadmin4可以理解为在线操作PostgreSQL的可视化网站,(也可以不安装这个,用DBeaver 或者 Navicat进行连接使用。

2.1 拉取镜像

docker pull dpage/pgadmin4

2.2 启动容器

docker run -d -p 5050:80 --name pgadmin4 -e PGADMIN_DEFAULT_EMAIL=admin -e PGADMIN_DEFAULT_PASSWORD=admin dpage/pgadmin4
  • PGADMIN_DEFAULT_EMAIL=admin是设置管理员账号为admin
  • PGADMIN_DEFAULT_PASSWORD=admin 是设置密码为 admin

    2.3 防火墙放行端口

    firewall-cmd --zone=public --add-port=5050/tcp --permanent
    

    由于部分服务器的设置,防火墙对部分端口没有放开,这时外部通过端口访问的时候可能请求不到,所以需要放行端口。

    2.4 页面操作

    前面操作执行成功后,通过url:http://{ip}:5050/login 进行页面访问,可进入下面这个页面,输入账号密码,语言选择中文,点击登录即可。

    进入页面后,选择添加服务器,然后输入我们数据库的相关信息即可添加成功

    然后我们选择创建架构(其他地方也有翻译为模式),为后文测试做准备(作者这里创造的是名为test的架构)

    然后在test下创建一张名为test1的表,该表只需要保护一个int类型的id字段即可

    建表后任意添加一条数据

    3 SpringBoot集成

    作者这里使用的是各依赖版本如下:

    • SpringBoot: 2.3.7.RELEASE
    • postgresql: 42.2.23
    • lombok: 1.18.26
    • mybatis: 2.3.0
    • mybatis-plus: 3.4.3

      3.1 pom依赖

      	
              11
              11
              2.3.7.RELEASE
          
          
              
                  org.postgresql
                  postgresql
                  42.2.23
              
              
                  org.springframework.boot
                  spring-boot-starter-jdbc
                  2.3.7.RELEASE
              
              
                  org.springframework.boot
                  spring-boot-starter-test
                  test
                  
                      
                          org.junit.vintage
                          junit-vintage-engine
                      
                  
              
              
                  org.projectlombok
                  lombok
                  1.18.26
              
              
                  org.mybatis.spring.boot
                  mybatis-spring-boot-starter
                  2.3.0
              
              
                  com.baomidou
                  mybatis-plus-boot-starter
                  3.4.3
              
          
      

      3.2 application.yml

      server:
        port: 9001
      spring:
        datasource:
          driver-class-name: org.postgresql.Driver
          username: postgres
          password: postgis
          url: jdbc:postgresql://{ip}:5432/postgres?currentSchema=test
      mybatis:
        mapper-locations: classpath:mapper/*.xml
        configuration:
          log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      

      注:对于jdbc:postgresql://{ip}:5432/postgres?currentSchema=test这里,如果不填 currentSchema=test则默认走postgres中public这个模式(也就是我们前文创建的架构),这里我们要走我们自己创建的test模式,所以这里需要把这个配置加上。

      3.3 domain实体类

      package com.ran.pgsql_code.domain;
      import com.baomidou.mybatisplus.annotation.TableName;
      import lombok.Data;
      @Data
      @TableName(value = "test1")
      public class Test {
          private Long id;
      }
      

      注:这里的表名要和我们前文创建的表对应上。

      3.4 mapper

      package com.ran.pgsql_code.mapper;
      import com.baomidou.mybatisplus.core.mapper.BaseMapper;
      import com.ran.pgsql_code.domain.Test;
      public interface TestMapper extends BaseMapper {
      }
      

      注:需要去application添加注解,这里要和我们的mapper创建的路径保持一致

      @MapperScan("com.ran.pgsql_code.mapper")
      

      4 代码调试

      创建测试类,执行以下代码

      package com.ran.pgsql_code;
      import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
      import com.ran.pgsql_code.mapper.TestMapper;
      import lombok.extern.slf4j.Slf4j;
      import org.junit.jupiter.api.Test;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.boot.test.context.SpringBootTest;
      import org.springframework.jdbc.core.JdbcTemplate;
      import javax.annotation.Resource;
      import java.util.List;
      @Slf4j
      @SpringBootTest
      class Tests {
          @Resource
          private TestMapper testMapper;
          @Test
          void queryForMybatisPlus(){
              QueryWrapper queryWrapper = new QueryWrapper<>();
              queryWrapper.eq("id", 1L);
              List result = testMapper.selectList(queryWrapper);
              if (result == null){
                  return;
              }
              for (com.rlz.pgsql_code.domain.Test test : result){
                  System.out.println(test);
              }
          }
      }
      

      执行能成功查到,集成成功

      5 总结

      由于PostgreSQL和MySQL的语法都是基于SQL来的,所以作者个人认为没必要重学一遍PostgreSQL的语法,基础的增删改查也可以通过mybatis来直接操作,等在实际应用中遇到了一些PostgreSQL的特殊化操作再去学习也是完全可以的。

转载请注明来自码农世界,本文标题:《【PostgreSQL】PostgreSQL Docker部署 + SpringBoot集成》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,64人围观)参与讨论

还没有评论,来说两句吧...

Top