最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud的JPA連接PostgreSql的教程

 更新時(shí)間:2021年06月26日 16:45:43   作者:之誠(chéng)  
這篇文章主要介紹了SpringCloud的JPA接入PostgreSql 教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

項(xiàng)目目錄結(jié)構(gòu)

在這里插入圖片描述

父build.gradle文件如下

spring-cloud-dependenciesspring-cloud-alibaba-dependencies 之間有版本對(duì)應(yīng)關(guān)系的。 并不是可以隨意搭配的。

具體版本對(duì)應(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 兩個(gè)模塊需要引入。 不然PSql的jsonb 等類型的字段無(wú)法使用

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()
}

對(duì)象的定義 基本 對(duì)象的定義:

json 類型的字段, 必須 @Type(type = “jsonb”) @Column(columnDefinition = “jsonb”) 同時(shí)定義。

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ù)庫(kù)一些特殊類型 序列化方式 定義在底層 基類中 
 */
@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;
}

表對(duì)象的定義:

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 {

    /**
     * 頁(yè)面的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 對(duì)象

@Repository
public interface PageRepository extends CrudRepository<PageDO, Integer> {

  List<PageDO> findByStatus(Integer status, Pageable pageable);

}

數(shù)據(jù)連接配置

## 數(shù)據(jù)庫(kù)
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ù)庫(kù)連接池等等

連接池等不用配置, 相關(guān)的包也可以不用引入, 默認(rèn)使用的是 HikariPool 連接池。

后期 我句接入Druid 連接池,并配置完善的監(jiān)控。

以上就是SpringCloud的JPA接入PostgreSql 教程的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud接入PostgreSql 的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳細(xì)聊聊JDK中的反模式接口常量

    詳細(xì)聊聊JDK中的反模式接口常量

    這篇文章主要給大家介紹了關(guān)于JDK中反模式接口常量的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用jdk具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • SpringBoot詳解執(zhí)行過(guò)程

    SpringBoot詳解執(zhí)行過(guò)程

    這篇文章主要介紹了SpringBoot的執(zhí)行過(guò)程原理,Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 基于Spring MVC的文件上傳和下載實(shí)現(xiàn)方法

    基于Spring MVC的文件上傳和下載實(shí)現(xiàn)方法

    在Web應(yīng)用程序中,文件上傳和下載是常見(jiàn)的功能,Spring MVC框架提供了方便的方式來(lái)實(shí)現(xiàn)這些功能,本文將介紹如何使用Spring MVC實(shí)現(xiàn)文件上傳和下載,需要的朋友可以參考下
    2023-05-05
  • IntelliJ IDEA中查看當(dāng)前類的所有繼承關(guān)系圖

    IntelliJ IDEA中查看當(dāng)前類的所有繼承關(guān)系圖

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中查看當(dāng)前類的所有繼承關(guān)系圖,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Java包裝類原理與用法實(shí)例分析

    Java包裝類原理與用法實(shí)例分析

    這篇文章主要介紹了Java包裝類,結(jié)合實(shí)例形式分析了Java包裝類基本概念、功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 全面解析JPA?倉(cāng)庫(kù)repository中的findAll()方法

    全面解析JPA?倉(cāng)庫(kù)repository中的findAll()方法

    這篇文章主要介紹了全面解析JPA?倉(cāng)庫(kù)repository中的findAll()方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java實(shí)現(xiàn)在不同線程中運(yùn)行的代碼實(shí)例

    Java實(shí)現(xiàn)在不同線程中運(yùn)行的代碼實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)在不同線程中運(yùn)行的代碼,結(jié)合具體實(shí)例形式分析了java多線程操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • SpringBoot使用@Slf4j注解實(shí)現(xiàn)日志輸出的示例代碼

    SpringBoot使用@Slf4j注解實(shí)現(xiàn)日志輸出的示例代碼

    @Slf4j 是 Lombok 庫(kù)中的一個(gè)注解,它極大地簡(jiǎn)化了日志記錄的代碼,通過(guò)使用這個(gè)注解,Lombok 會(huì)自動(dòng)在你的類中注入一個(gè)靜態(tài)的日志對(duì)象,本文給大家介紹了SpringBoot使用@Slf4j注解實(shí)現(xiàn)日志輸出的方法,需要的朋友可以參考下
    2024-10-10
  • Hibernate的各種保存方式的區(qū)別詳解

    Hibernate的各種保存方式的區(qū)別詳解

    今天小編就為大家分享一篇關(guān)于Hibernate的各種保存方式的區(qū)別詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 深入解讀分布式事務(wù)Seata的XA模式

    深入解讀分布式事務(wù)Seata的XA模式

    這篇文章主要介紹了深入解讀分布式事務(wù)Seata的XA模式,XA 規(guī)范 描述了全局的事務(wù)管理器與局部的資源管理器之間的接口,XA規(guī)范 的目的是允許的多個(gè)資源在同一事務(wù)中訪問(wèn),這樣可以使 ACID 屬性跨越應(yīng)用程序而保持有效,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

清丰县| 大余县| 柘荣县| 固阳县| 子洲县| 白沙| 乐都县| 定州市| 滦南县| 城步| 视频| 图片| 柳林县| 阳高县| 古交市| 乾安县| 高淳县| 康保县| 行唐县| 鄯善县| 安多县| 云梦县| 麻城市| 富平县| 阳春市| 尚义县| 荆门市| 沙河市| 上蔡县| 河北省| 六安市| 泸西县| 鹤壁市| 连平县| 腾冲县| 湖州市| 普格县| 台北县| 高邑县| 香河县| 新巴尔虎左旗|