【PostgreSQL】PostgreSQL Docker部署 + SpringBoot集成

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依赖

	<properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.23</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>

    </dependencies>

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则默认走postgrespublic这个模式(也就是我们前文创建的架构),这里我们要走我们自己创建的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<Test> {

}

注:需要去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<com.ran.pgsql_code.domain.Test> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", 1L);
        List<com.rlz.pgsql_code.domain.Test> result = testMapper.selectList(queryWrapper);
        if (result == null){
            return;
        }
        for (com.rlz.pgsql_code.domain.Test test : result){
            System.out.println(test);
        }
    }

}

执行能成功查到,集成成功
在这里插入图片描述

5 总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值