简单起见,这里用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
pgAdmin4镜像网站下载:https://mirrors.aliyun.com/postgresql/pgadmin/pgadmin4/
使用pgAdmin4创建表,手动创建即可,注意,表名和表字段使用下划线方式命名,不要用驼峰,不然映射到Java 会报找不到表的错
第一步:新建 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;
可以更改最大连接数,避免多个客户端连接不上的问题
持久层还用的mybatis,先导入下依赖
org.postgresql postgresql
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
这点其实大部分跟 MySQL 差不多,
character varying -> String
timestamp without time zone -> Date
integer -> Integer
UUID -> UUID
这里重点看一下 UUID 映射处理
然后代码中需要使用 UUID.fromString 做个转换,比如下面这样:
对 postgresql 增删改查代码和对mysql的增删改查没有任何区别,我们只是更换了数据源,代码不用做任何改动(比如说之前是通过 mybatis 操作 mysql,现在只是把 mysql 换成 postgre,代码还是保持原来一样即可)