直接看三吧,这个也没写好
PostgreSQL的话主要还是整理一下使用方法吧,毕竟我现在也只会使用。
PostgreSQL的使用方法与MySQL类似, 但更全面,实现了SQL-2/SQL-92 和 SQL-3/SQL-99标准。优点缺点就不提了,直接说说怎么用吧。
咱使用pg当然不会只把他当做MySQL来用,而我用它的目的就是jsonb。
0. 导入有用的包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
1.基本配置
spring:
datasource:
url: jdbc:postgresql://118.89.146:5432/postgres
username: postgres
password: 123456
driverClassName: org.postgresql.Driver
type: com.alibaba.druid.pool.DruidDataSource
initialization-mode: always
jpa:
show-sql: true
database-platform: cn...ledger.dialect.JsonbPostgresDialect
hibernate:
ddl-auto: update
properties:
hibernate:
temp:
use_jdbc_metadata_defaults: false
ps: use_jdbc_metadata_defaults这个配置很重要,可以解决SpringBoot2.0版本的一个错误,具体机理我还没有研究,只是参考了一个博客做出的修改。
2. 配置方言
以上的配置与MySQL没什么差别,需要注意是方言的指定,我写的这个需要自己配置方言类:
import org.hibernate.dialect.PostgreSQL94Dialect;
import org.hibernate.dialect.PostgreSQL95Dialect;
import org.hibernate.type.StringType;
import java.sql.Types;
/**
* @Author ZhenYang
* @Date Created in 2018/3/14 13:45
* @Description
*/
public class JsonbPostgresDialect extends PostgreSQL95Dialect {
public JsonbPostgresDialect() {
super();
registerColumnType(Types.JAVA_OBJECT, "jsonb");
registerHibernateType( Types.ARRAY, StringType.class.getName());
}
}
这里我指定了jsonb的类型,下面那个HibernateType是当时测试玩的。
3.配置jsonb类型
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.hibernate.HibernateException;
import org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl;
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.type.SerializationException;
import org.hibernate.usertype.ParameterizedType;
import org.hibernate.usertype.UserType;
import org.postgresql.util.PGobject;
import org.springframework.util.ObjectUtils;
import java