PostgreSQL Docker部署+SpringBoot集成方式
背景
最近公司有新項目需要使用 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.RELEASEpostgresql
: 42.2.23lombok
: 1.18.26mybatis
: 2.3.0mybatis-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)走postgres
中public
這個模式(也就是我們前文創(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é)
由于PostgreSQL
和MySQL
的語法都是基于SQL來的,所以作者個人認(rèn)為沒必要重學(xué)一遍PostgreSQL
的語法,基礎(chǔ)的增刪改查也可以通過mybatis
來直接操作,等在實際應(yīng)用中遇到了一些PostgreSQL
的特殊化操作再去學(xué)習(xí)也是完全可以的。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Docker環(huán)境實現(xiàn)PostgreSQL自動備份的流程步驟
- 從Docker容器中備份整個PostgreSQL的操作步驟
- Docker安裝PostgreSQL數(shù)據(jù)庫的詳細(xì)步驟
- 使用docker compose啟動postgresql的示例代碼
- 在docker上部署postgreSQL主從的超詳細(xì)步驟
- Docker修改Postgresql密碼的方法詳解
- Docker如何安裝PostgreSQL
- 如何使用Dockerfile創(chuàng)建PostgreSQL數(shù)據(jù)庫
- docker容器中登陸并操作postgresql的實現(xiàn)
- 一步步教你用docker部署postgreSQL數(shù)據(jù)庫
- Docker部署postgresql的方法實現(xiàn)
相關(guān)文章
springboot 中 druid+jpa+MYSQL數(shù)據(jù)庫配置過程
這篇文章主要介紹了springboot 中 druid+jpa+MYSQL數(shù)據(jù)庫配置,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能
這篇文章主要介紹了SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09