SpringBoot項(xiàng)目配置postgresql數(shù)據(jù)庫(kù)完整步驟(配置多數(shù)據(jù)源)
pg庫(kù)也是常用的數(shù)據(jù)庫(kù)之一,有些剛開始接觸開發(fā)的老師可能不熟,這里簡(jiǎn)單介紹一下,總體使用方法和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ù)庫(kù)1,test2是數(shù)據(jù)庫(kù)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ù)越來(lái)越好!
總結(jié)
到此這篇關(guān)于SpringBoot項(xiàng)目配置postgresql數(shù)據(jù)庫(kù)(配置多數(shù)據(jù)源)的文章就介紹到這了,更多相關(guān)SpringBoot配置postgresql數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot3集成PostgreSQL的詳細(xì)過程
- mybatis+springboot發(fā)布postgresql數(shù)據(jù)的實(shí)現(xiàn)
- SpringBoot集成PostgreSQL并設(shè)置最大連接數(shù)
- SpringBoot整合PostgreSQL的示例代碼
- springboot+springJdbc+postgresql 實(shí)現(xiàn)多數(shù)據(jù)源的配置
- SpringBoot連接使用PostgreSql數(shù)據(jù)庫(kù)的方法
- Springboot中MyBatisplus使用IPage和Page分頁(yè)的實(shí)例代碼
- SpringBoot+MybatisPlus+代碼生成器整合示例
- springboot集成mybatisplus實(shí)例詳解
- SpringBoot連接PostgreSQL+MybatisPlus入門案例(代碼詳解)
相關(guān)文章
Spring運(yùn)行時(shí)手動(dòng)注入bean的方法實(shí)例
spring給我們提供了IOC服務(wù),讓我們可以用注解的方式,方便的使用bean的相互引用,下面這篇文章主要給大家介紹了關(guān)于Spring運(yùn)行時(shí)手動(dòng)注入bean的相關(guān)資料,需要的朋友可以參考下2022-05-05
SpringBoot yaml語(yǔ)法與JRS303校驗(yàn)超詳細(xì)講解
YAML 是 “YAML Ain’t Markup Language”(YAML 不是一種標(biāo)記語(yǔ)言)的遞歸縮寫。在開發(fā)的這種語(yǔ)言時(shí),YAML 的意思其實(shí)是:“Yet Another Markup Language”(仍是一種標(biāo)記語(yǔ)言),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10
java GUI實(shí)現(xiàn)學(xué)生圖書管理簡(jiǎn)單實(shí)例
這篇文章主要為大家詳細(xì)介紹了java GUI實(shí)現(xiàn)學(xué)生圖書管理簡(jiǎn)單示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Fluent Mybatis,原生Mybatis,Mybatis Plus三者功能對(duì)比
本文主要介紹了Fluent Mybatis,原生Mybatis,Mybatis Plus三者功能對(duì)比,分享給大家,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
基于多網(wǎng)卡環(huán)境下Eureka服務(wù)注冊(cè)IP的選擇問題
這篇文章主要介紹了基于多網(wǎng)卡環(huán)境下Eureka服務(wù)注冊(cè)IP的選擇問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java 使用POI生成帶聯(lián)動(dòng)下拉框的excel表格實(shí)例代碼
本文通過實(shí)例代碼給大家分享Java 使用POI生成帶聯(lián)動(dòng)下拉框的excel表格,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09
Java中ArrayList在foreach里remove的問題詳析
這篇文章主要給大家介紹了關(guān)于Java中ArrayList在foreach里remove問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2018-09-09

