PostgreSQL Docker部署+SpringBoot集成方式
背景
最近公司有新項(xiàng)目需要使用 PostgreSQL ,于是簡(jiǎn)單學(xué)習(xí)了一下,并記錄一下過(guò)程。
安裝PostgreSQL
拉取鏡像
docker pull mdillon/postgis
啟動(dòng)容器
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)站,(也可以不安裝這個(gè),用DBeaver 或者 Navicat進(jìn)行連接使用。
拉取鏡像
docker pull dpage/pgadmin4
啟動(dòng)容器
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è)置管理員賬號(hào)為admin
PGADMIN_DEFAULT_PASSWORD=admin
是設(shè)置密碼為admin
防火墻放行端口
firewall-cmd --zone=public --add-port=5050/tcp --permanent
由于部分服務(wù)器的設(shè)置,防火墻對(duì)部分端口沒(méi)有放開(kāi),這時(shí)外部通過(guò)端口訪問(wèn)的時(shí)候可能請(qǐng)求不到,所以需要放行端口。
頁(yè)面操作
前面操作執(zhí)行成功后,通過(guò)url:http://{ip}:5050/login
進(jìn)行頁(yè)面訪問(wèn),可進(jìn)入下面這個(gè)頁(yè)面,輸入賬號(hào)密碼,語(yǔ)言選擇中文,點(diǎn)擊登錄即可。
進(jìn)入頁(yè)面后,選擇添加服務(wù)器
,然后輸入我們數(shù)據(jù)庫(kù)的相關(guān)信息即可添加成功
然后我們選擇創(chuàng)建架構(gòu)
(其他地方也有翻譯為模式
),為后文測(cè)試做準(zhǔn)備(作者這里創(chuàng)造的是名為test
的架構(gòu))
然后在test
下創(chuàng)建一張名為test1
的表,該表只需要保護(hù)一個(gè)int類(lèi)型的id字段即可
建表后任意添加一條數(shù)據(jù)
SpringBoot集成
作者這里使用的是各依賴(lài)版本如下:
SpringBoot
: 2.3.7.RELEASEpostgresql
: 42.2.23lombok
: 1.18.26mybatis
: 2.3.0mybatis-plus
: 3.4.3
pom依賴(lài)
<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
注:對(duì)于jdbc:postgresql://{ip}:5432/postgres?currentSchema=test
這里,如果不填 currentSchema=test
則默認(rèn)走postgres
中public
這個(gè)模式(也就是我們前文創(chuàng)建的架構(gòu)
),這里我們要走我們自己創(chuàng)建的test
模式,所以這里需要把這個(gè)配置加上。
domain實(shí)體類(lèi)
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)建的表對(duì)應(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)建測(cè)試類(lèi),執(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é)
由于PostgreSQL
和MySQL
的語(yǔ)法都是基于SQL來(lái)的,所以作者個(gè)人認(rèn)為沒(méi)必要重學(xué)一遍PostgreSQL
的語(yǔ)法,基礎(chǔ)的增刪改查也可以通過(guò)mybatis
來(lái)直接操作,等在實(shí)際應(yīng)用中遇到了一些PostgreSQL
的特殊化操作再去學(xué)習(xí)也是完全可以的。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Docker環(huán)境實(shí)現(xiàn)PostgreSQL自動(dòng)備份的流程步驟
- 從Docker容器中備份整個(gè)PostgreSQL的操作步驟
- Docker安裝PostgreSQL數(shù)據(jù)庫(kù)的詳細(xì)步驟
- 使用docker compose啟動(dòng)postgresql的示例代碼
- 在docker上部署postgreSQL主從的超詳細(xì)步驟
- Docker修改Postgresql密碼的方法詳解
- Docker如何安裝PostgreSQL
- 如何使用Dockerfile創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)
- docker容器中登陸并操作postgresql的實(shí)現(xiàn)
- 一步步教你用docker部署postgreSQL數(shù)據(jù)庫(kù)
- Docker部署postgresql的方法實(shí)現(xiàn)
相關(guān)文章
java實(shí)現(xiàn)的xml格式化實(shí)現(xiàn)代碼
這篇文章主要介紹了java實(shí)現(xiàn)的xml格式化實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-11-11springboot 中 druid+jpa+MYSQL數(shù)據(jù)庫(kù)配置過(guò)程
這篇文章主要介紹了springboot 中 druid+jpa+MYSQL數(shù)據(jù)庫(kù)配置,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Spark Streaming編程初級(jí)實(shí)踐詳解
這篇文章主要為大家介紹了Spark Streaming編程初級(jí)實(shí)踐詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04java比較兩個(gè)list是否相同equals的代碼詳解
在本篇文章里小編給大家分享的是關(guān)于java比較兩個(gè)list是否相同equals的代碼詳解,有需要的朋友們可以參考學(xué)習(xí)下。2020-02-02SpringBoot整合Kaptcha實(shí)現(xiàn)圖形驗(yàn)證碼功能
這篇文章主要介紹了SpringBoot整合Kaptcha實(shí)現(xiàn)圖形驗(yàn)證碼功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09