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的特殊化操作再去学习也是完全可以的。
还没有评论,来说两句吧...