springboot整合postgresql
使用docker安装postgres
简单起见,这里用docker来安装postgresql
docker pull postgres
docker run --name postgres \
-e POSTGRES_PASSWORD=123456 \
-p 5432:5432 \
-v /usr/local/docker/postgresql/data:/var/lib/postgresql/data \
-d postgres
postgres客户端
pgAdmin4镜像网站下载:https://mirrors.aliyun.com/postgresql/pgadmin/pgadmin4/
使用pgAdmin4创建表,手动创建即可,注意,表名和表字段使用下划线方式命名,不要用驼峰,不然映射到Java 会报找不到表的错
为表id字段设置主键自增
第一步:新建 sequence
第二步:为主键设置Sequences:
alter table public.kss_user_pay alter column myid set default nextval('public.kss_user_pay_id_seq');
第三步:查看是否已经绑定
查看最大连接数
--获取当前实例的总的连接数
select count(1) from pg_stat_activity ;
--获取当前实例的空闲连接数
select count(1) from pg_stat_activity where state = 'idle';
show max_connections;
select name, setting, context, source from pg_settings where name = 'max_connections';
select * from pg_file_settings where error is not null;
可以更改最大连接数,避免多个客户端连接不上的问题
springboot整合postgres
持久层还用的mybatis,先导入下依赖
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
application.yml配置,这块,以前mysql是怎么配,postgres就怎么配,换个用户密码的事儿
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
#PostgreSQL驱动
driver-class-name: org.postgresql.Driver
#PostgreSQL配置
url: jdbc:postgresql://192.168.133.128:5432/postgres?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf-8&useSSL=false
#用户密码
username: postgres
password: 123456
hikari:
connection-timeout: 60000
validation-timeout: 3000
idle-timeout: 60000
login-timeout: 5
max-lifetime: 60000
maximum-pool-size: 400
minimum-idle: 100
read-only: false
postgresql 数据类型到 Java 属性的映射
这点其实大部分跟 MySQL 差不多,
character varying -> String
timestamp without time zone -> Date
integer -> Integer
UUID -> UUID
这里重点看一下 UUID 映射处理
然后代码中需要使用 UUID.fromString
做个转换,比如下面这样:
对 postgresql 增删改查
对 postgresql 增删改查代码和对mysql的增删改查没有任何区别,我们只是更换了数据源,代码不用做任何改动(比如说之前是通过 mybatis 操作 mysql,现在只是把 mysql 换成 postgre,代码还是保持原来一样即可)