SpringBoot項(xiàng)目配置postgresql數(shù)據(jù)庫完整步驟(配置多數(shù)據(jù)源)
pg庫也是常用的數(shù)據(jù)庫之一,有些剛開始接觸開發(fā)的老師可能不熟,這里簡單介紹一下,總體使用方法和mysql類似,所以這里只講配置方法
pom文件導(dǎo)入依賴
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.18</version>
</dependency>yml文件配置(多數(shù)據(jù)源):
spring:
datasource:
bd3:
jdbc-url: jdbc:postgresql://XXX.XXX.XX.XXX:5432/test1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
username: XXX
password: XXX
driver-class-name: org.postgresql.Driver
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 3
auto-commit: true
idle-timeout: 10000
pool-name: DatebookHikariCP
max-lifetime: 1800000
connection-timeout: 30000
timed:
jdbc-url: jdbc:postgresql://XXX.XXX.XX.XXX:5432/test2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
username: XXX
password: XXX
driver-class-name: org.postgresql.Driver
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 3
auto-commit: true
idle-timeout: 10000
pool-name: DatebookHikariCP
max-lifetime: 1800000
connection-timeout: 30000這個(gè)地方test1是數(shù)據(jù)庫1,test2是數(shù)據(jù)庫2,yml文件一定要主要好格式,建議用properties
下面是有關(guān)于多數(shù)據(jù)源的配置
文件夾格式,這里直接放貼圖

不同數(shù)據(jù)源的dao層要放到對(duì)應(yīng)文件夾下
下面是數(shù)據(jù)源的配置文件
MyBaitsSqlSessionFactory配置文件
package com.XXX.XXX.datasource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
public class MyBaitsSqlSessionFactory {
private MyBaitsSqlSessionFactory() {
}
private static final MyBaitsSqlSessionFactory onlyOne = new MyBaitsSqlSessionFactory();
public static MyBaitsSqlSessionFactory getInstance() {
return onlyOne;
}
public SqlSessionFactory sessionFactory(DataSource dataSource, String mapper_location, String type_aliases_package, boolean mapUnderscoreToCamelCase) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setVfs(SpringBootVFS.class);
//mybatis掃描xml所在位置
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapper_location));
//實(shí)體類位置
bean.setTypeAliasesPackage(type_aliases_package);
//mybatis配置
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(mapUnderscoreToCamelCase);
bean.setConfiguration(configuration);
return bean.getObject();
}
}Bd3Config配置文件
package com.XXX.XXX.datasource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@SpringBootConfiguration
@MapperScan(basePackages = "com.XXX.XXX.dao.bd3", sqlSessionFactoryRef = "bd3SessionFactory", sqlSessionTemplateRef = "bd3SqlSessionTemplate")
public class Bd3Config {
//@Value("${mybatis.mapper-locations}")
private String mapper_location = "classpath*:/mapper/bd3/**/*.xml";
@Value("${mybatis.type-aliases-package}")
private String type_aliases_package;
@Value("${mybatis.configuration.map-underscore-to-camel-case}")
private boolean mapUnderscoreToCamelCase;
/**
* 初始化連接池
*
* @return DataSource
*/
@Bean(name = "bd3")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.bd3")
public DataSource bd3DataSource() {
return DataSourceBuilder.create().build();
}
/**
* 構(gòu)建 SqlSessionFactory
*
* @return SqlSessionFactory
*/
@Bean(name = "bd3SessionFactory")
@Primary
public SqlSessionFactory bd3SessionFactory() throws Exception {
MyBaitsSqlSessionFactory myBatisFactory = MyBaitsSqlSessionFactory.getInstance();
return myBatisFactory.sessionFactory(bd3DataSource(), mapper_location, type_aliases_package, mapUnderscoreToCamelCase);
}
/*
* 配置事物
*
* @return DataSourceTransactionManager
*/
@Bean("bd3TransactionManager")
@Primary
public DataSourceTransactionManager TransactionManager() {
return new DataSourceTransactionManager(bd3DataSource());
}
/**
* 構(gòu)建 SqlSessionTemplate
*
* @return SqlSessionTemplate
*/
@Bean(name = "bd3SqlSessionTemplate")
@Primary
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(bd3SessionFactory());
}
}TimedConfig配置文件
package com.XXX.XXX.datasource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@SpringBootConfiguration
@MapperScan(basePackages = "com.XX.XXX.dao.timed", sqlSessionFactoryRef = "timedSessionFactory", sqlSessionTemplateRef = "timedSqlSessionTemplate")
public class TimedConfig {
//@Value("${mybatis.mapper-locations}")
private String mapper_location = "classpath*:/mapper/timed/**/*.xml";
@Value("${mybatis.type-aliases-package}")
private String type_aliases_package;
@Value("${mybatis.configuration.map-underscore-to-camel-case}")
private boolean mapUnderscoreToCamelCase;
/**
* 初始化連接池
*
* @return DataSource
*/
@Bean(name = "timed")
@ConfigurationProperties(prefix = "spring.datasource.timed")
public DataSource timedDataSource() {
return DataSourceBuilder.create().build();
}
/**
* 構(gòu)建 SqlSessionFactory
*
* @return SqlSessionFactory
*/
@Bean(name = "timedSessionFactory")
public SqlSessionFactory timedSessionFactory() throws Exception {
MyBaitsSqlSessionFactory myBatisFactory = MyBaitsSqlSessionFactory.getInstance();
return myBatisFactory.sessionFactory(timedDataSource(), mapper_location, type_aliases_package, mapUnderscoreToCamelCase);
}
/*
* 配置事物
*
* @return DataSourceTransactionManager
*/
@Bean("timedTransactionManager")
public DataSourceTransactionManager TransactionManager() {
return new DataSourceTransactionManager(timedDataSource());
}
/**
* 構(gòu)建 SqlSessionTemplate
*
* @return SqlSessionTemplate
*/
@Bean(name = "timedSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(timedSessionFactory());
}
}然后就可以正常使用了,希望大家技術(shù)越來越好!
總結(jié)
到此這篇關(guān)于SpringBoot項(xiàng)目配置postgresql數(shù)據(jù)庫(配置多數(shù)據(jù)源)的文章就介紹到這了,更多相關(guān)SpringBoot配置postgresql數(shù)據(jù)庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot下配置多數(shù)據(jù)源的方法
- springboot + mybatis配置多數(shù)據(jù)源示例
- springboot 多數(shù)據(jù)源配置不生效遇到的坑及解決
- springboot-mongodb的多數(shù)據(jù)源配置的方法步驟
- 詳解SpringBoot和Mybatis配置多數(shù)據(jù)源
- Springboot如何設(shè)置多數(shù)據(jù)源,隨時(shí)切換
- springboot 多數(shù)據(jù)源的實(shí)現(xiàn)(最簡單的整合方式)
- springboot整合多數(shù)據(jù)源配置方式
- SpringBoot中Flowable多數(shù)據(jù)源配置及事務(wù)沖突的兩種方案
相關(guān)文章
解決bootstrap.yml不生效,無法優(yōu)先于application.yml文件加載問題
文章主要討論了在Spring Boot項(xiàng)目中,`bootstrap.yml`文件無法優(yōu)先于`application.yml`文件加載的問題,原因是缺少了`nacos-config`依賴,且需要確保Spring Boot版本與`nacos-config`版本匹配,作者希望通過分享個(gè)人經(jīng)驗(yàn),幫助他人解決類似問題2024-12-12
SpringBoot注解@Import原理之關(guān)于ConfigurationClassPostProcessor源碼解析
這篇文章主要介紹了SpringBoot注解@Import原理之關(guān)于ConfigurationClassPostProcessor源碼解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Java?ArrayList實(shí)現(xiàn)刪除指定位置的元素
目標(biāo):list中有0到39共40個(gè)元素,刪除其中索引是10、20、30的元素。本文為大家整理了三個(gè)不同的方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-01-01
SpringKafka消息發(fā)布之KafkaTemplate與事務(wù)支持功能
通過本文介紹的基本用法、序列化選項(xiàng)、事務(wù)支持、錯(cuò)誤處理和性能優(yōu)化技術(shù),開發(fā)者可以構(gòu)建高效可靠的Kafka消息發(fā)布系統(tǒng),事務(wù)支持特性尤為重要,它確保了在分布式環(huán)境中的數(shù)據(jù)一致性,感興趣的朋友一起看看吧2025-04-04
java 學(xué)習(xí)筆記(入門篇)_java的基礎(chǔ)語法
從基礎(chǔ)語法開始,這個(gè)語法你也可以理解為英語或是漢語里面的語法,只不過大家各有各的特點(diǎn)和區(qū)別;那么在學(xué)習(xí)的過程中我們就要不斷的積累重要的類和方法,這樣寫程序就會(huì)方便快捷了,下面就開始學(xué)習(xí)java的基礎(chǔ)語法2013-01-01
java的socket請(qǐng)求和響應(yīng)方式
這篇文章主要介紹了java的socket請(qǐng)求和響應(yīng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

