SpringCloud的JPA連接PostgreSql的教程
項目目錄結(jié)構(gòu)

父build.gradle文件如下
spring-cloud-dependencies和spring-cloud-alibaba-dependencies之間有版本對應(yīng)關(guān)系的。 并不是可以隨意搭配的。
具體版本對應(yīng)關(guān)系參考:
版本關(guān)系
本想使用WebFlux模塊的,奈何openfeign 不支持。
buildscript {
ext {
springBootVersion = '2.1.13.RELEASE'
springBootManagementVersion = '1.0.8.RELEASE'
}
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("io.spring.gradle:dependency-management-plugin:${springBootManagementVersion}")
}
}
subprojects {
apply plugin: "idea"
apply plugin: "java"
apply plugin: 'org.springframework.boot'
apply plugin: "io.spring.dependency-management"
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
group "xyz.xiezc.mzix"
version "1.0.0"
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}
dependencies{
compile group: 'cn.hutool', name: 'hutool-all', version: '5.6.6'
compileOnly "org.projectlombok:lombok:1.18.20"
compile 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config'
compile 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery'
compile 'org.springframework.boot:spring-boot-starter-actuator'
compile 'org.springframework.boot:spring-boot-starter-aop'
compile 'org.springframework.cloud:spring-cloud-starter-openfeign'
annotationProcessor("org.projectlombok:lombok:1.18.20")
}
dependencyManagement {
imports {
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Greenwich.SR6'
mavenBom "com.alibaba.cloud:spring-cloud-alibaba-dependencies:2.1.4.RELEASE"
}
}
}
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}
Schedule模塊引入JPA相關(guān)配置
:hibernate-types-52 和 commons-lang3 兩個模塊需要引入。 不然PSql的jsonb 等類型的字段無法使用
dependencies {
implementation project(":common")
compile('org.springframework.boot:spring-boot-starter-data-redis-reactive')
compile('org.springframework.boot:spring-boot-starter-web')
implementation group: 'org.postgresql', name: 'postgresql', version: '42.2.20'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.apache.commons:commons-lang3:3.12.0'
implementation 'com.vladmihalcea:hibernate-types-52:2.10.3'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
}
對象的定義 基本 對象的定義:
json 類型的字段, 必須 @Type(type = “jsonb”) @Column(columnDefinition = “jsonb”) 同時定義。
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.vladmihalcea.hibernate.type.array.IntArrayType;
import com.vladmihalcea.hibernate.type.array.StringArrayType;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import com.vladmihalcea.hibernate.type.json.JsonNodeBinaryType;
import com.vladmihalcea.hibernate.type.json.JsonNodeStringType;
import com.vladmihalcea.hibernate.type.json.JsonStringType;
import lombok.Data;
import org.hibernate.annotations.*;
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
import java.util.Map;
/**
* 數(shù)據(jù)庫一些特殊類型 序列化方式 定義在底層 基類中
*/
@TypeDefs({
@TypeDef(name = "string-array", typeClass = StringArrayType.class),
@TypeDef(name = "int-array", typeClass = IntArrayType.class),
@TypeDef(name = "json", typeClass = JsonStringType.class),
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class),
@TypeDef(name = "jsonb-node", typeClass = JsonNodeBinaryType.class),
@TypeDef(name = "json-node", typeClass = JsonNodeStringType.class),
})
@Data
@MappedSuperclass
public class BaseEntity {
@Column
@CreationTimestamp
private LocalDateTime createTime;
@Column
@UpdateTimestamp
private LocalDateTime updateTime;
/**
* 0: 是默認(rèn)狀態(tài)
* -1: 是默認(rèn)的刪除狀態(tài)
*/
@Column
private Integer status = 0;
@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
private Map<String, Object> attribute;
}
表對象的定義:
Psql的schema 和 mysql的schema的略有不同。 @Table中必須指定schema
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.Type;
import javax.persistence.*;
import java.util.Map;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@Table(name = "t_page", schema = "xiezc")
public class PageDO extends BaseEntity {
/**
* 頁面的id
*/
@Id
@GeneratedValue
Long id;
@Column
String code;
@Column(unique = true)
String url;
@Column
String contentType;
@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
Map<String, Object> request;
@Type(type = "jsonb")
@Column(columnDefinition = "jsonb")
Map<String, Object> response;
}
Repository 對象
@Repository
public interface PageRepository extends CrudRepository<PageDO, Integer> {
List<PageDO> findByStatus(Integer status, Pageable pageable);
}
數(shù)據(jù)連接配置
## 數(shù)據(jù)庫 spring.datasource.url=jdbc:postgresql://psotgres:5432/postgres spring.datasource.username=xiezc spring.datasource.password=1234567 spring.datasource.driverClassName=org.postgresql.Driver spring.jpa.generate-ddl=true spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update
數(shù)據(jù)庫連接池等等
連接池等不用配置, 相關(guān)的包也可以不用引入, 默認(rèn)使用的是 HikariPool 連接池。
后期 我句接入Druid 連接池,并配置完善的監(jiān)控。
以上就是SpringCloud的JPA接入PostgreSql 教程的詳細內(nèi)容,更多關(guān)于SpringCloud接入PostgreSql 的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Spring MVC的文件上傳和下載實現(xiàn)方法
在Web應(yīng)用程序中,文件上傳和下載是常見的功能,Spring MVC框架提供了方便的方式來實現(xiàn)這些功能,本文將介紹如何使用Spring MVC實現(xiàn)文件上傳和下載,需要的朋友可以參考下2023-05-05
IntelliJ IDEA中查看當(dāng)前類的所有繼承關(guān)系圖
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中查看當(dāng)前類的所有繼承關(guān)系圖,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
全面解析JPA?倉庫repository中的findAll()方法
這篇文章主要介紹了全面解析JPA?倉庫repository中的findAll()方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
SpringBoot使用@Slf4j注解實現(xiàn)日志輸出的示例代碼
@Slf4j 是 Lombok 庫中的一個注解,它極大地簡化了日志記錄的代碼,通過使用這個注解,Lombok 會自動在你的類中注入一個靜態(tài)的日志對象,本文給大家介紹了SpringBoot使用@Slf4j注解實現(xiàn)日志輸出的方法,需要的朋友可以參考下2024-10-10

