最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL Docker部署+SpringBoot集成方式

 更新時間:2024年12月16日 09:12:34   作者:愛寫B(tài)UG的老冉  
本文介紹了如何在Docker中部署PostgreSQL和pgadmin,并通過SpringBoot集成PostgreSQL,主要步驟包括安裝PostgreSQL和pgadmin,配置防火墻,創(chuàng)建數(shù)據(jù)庫和表,以及在SpringBoot中配置數(shù)據(jù)源和實體類

背景

最近公司有新項目需要使用 PostgreSQL ,于是簡單學(xué)習(xí)了一下,并記錄一下過程。

安裝PostgreSQL

拉取鏡像

docker pull mdillon/postgis

啟動容器

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

注:其中 POSTGRES_PASSWORD=postgis 設(shè)置了密碼為 postgis

安裝pgadmin4

pgadmin4可以理解為在線操作PostgreSQL的可視化網(wǎng)站,(也可以不安裝這個,用DBeaver 或者 Navicat進行連接使用。

拉取鏡像

docker pull dpage/pgadmin4

啟動容器

docker run -d -p 5050:80 --name pgadmin4 -e PGADMIN_DEFAULT_EMAIL=admin -e PGADMIN_DEFAULT_PASSWORD=admin dpage/pgadmin4
  • PGADMIN_DEFAULT_EMAIL=admin是設(shè)置管理員賬號為admin
  • PGADMIN_DEFAULT_PASSWORD=admin 是設(shè)置密碼為 admin

防火墻放行端口

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

由于部分服務(wù)器的設(shè)置,防火墻對部分端口沒有放開,這時外部通過端口訪問的時候可能請求不到,所以需要放行端口。

頁面操作

前面操作執(zhí)行成功后,通過url:http://{ip}:5050/login 進行頁面訪問,可進入下面這個頁面,輸入賬號密碼,語言選擇中文,點擊登錄即可。

進入頁面后,選擇添加服務(wù)器,然后輸入我們數(shù)據(jù)庫的相關(guān)信息即可添加成功


然后我們選擇創(chuàng)建架構(gòu)(其他地方也有翻譯為模式),為后文測試做準(zhǔn)備(作者這里創(chuàng)造的是名為test的架構(gòu))

然后在test下創(chuàng)建一張名為test1的表,該表只需要保護一個int類型的id字段即可

建表后任意添加一條數(shù)據(jù)

SpringBoot集成

作者這里使用的是各依賴版本如下:

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

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>

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則默認(rèn)走postgrespublic這個模式(也就是我們前文創(chuàng)建的架構(gòu)),這里我們要走我們自己創(chuàng)建的test模式,所以這里需要把這個配置加上。

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;
}

注:這里的表名要和我們前文創(chuàng)建的表對應(yīng)上。

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創(chuàng)建的路徑保持一致

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

代碼調(diào)試

創(chuàng)建測試類,執(zhí)行以下代碼

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);
        }
    }

}

執(zhí)行能成功查到,集成成功

總結(jié)

由于PostgreSQLMySQL的語法都是基于SQL來的,所以作者個人認(rèn)為沒必要重學(xué)一遍PostgreSQL的語法,基礎(chǔ)的增刪改查也可以通過mybatis來直接操作,等在實際應(yīng)用中遇到了一些PostgreSQL的特殊化操作再去學(xué)習(xí)也是完全可以的。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

淮北市| 独山县| 泰兴市| 黑山县| 介休市| 思南县| 金堂县| 锦屏县| 新余市| 枞阳县| 大港区| 西充县| 大宁县| 潍坊市| 两当县| 永城市| 文山县| 和田县| 奉贤区| 秦皇岛市| 泰顺县| 渭源县| 东丽区| 滨海县| 南昌市| 宁德市| 固始县| 水富县| 广河县| 贵港市| 福州市| 房产| 柞水县| 沅江市| 海宁市| 泾源县| 龙里县| 凉城县| 绿春县| 依兰县| 新竹市|